# Wildflower Computer documentation > Complete Markdown documentation generated from the same rendered pages humans read. --- title: "An open boundary for sandbox compute." description: "About Wildflower Computer, the provider-neutral sandbox API for 12 supported backends using customer-owned provider credentials." canonical: "https://wildflower.computer/about/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # An open boundary for sandbox compute. Wildflower Computer gives applications one persistent sandbox lifecycle across 12 supported providers while keeping provider choice and credentials under the customer's control. ## Why Wildflower Computer exists Sandbox providers expose different creation inputs, lifecycle states, and execution protocols. Wildflower Computer puts one small application-facing contract in front of those differences while keeping meaningful provider-specific behavior visible. ## What it does - Creates a persistent sandbox on one selected provider. - Returns a routeable ID for later get, runCommand, and delete calls. - Normalizes sandbox state, metadata, command results, and errors. - Generates TypeScript, Python, Rust, Go, and Zig clients. - Supports encrypted project profiles and ephemeral credential overrides. ## What it does not do - Host the provider-native sandbox. - Move existing sandbox state between providers. - Automatically fail over, retry elsewhere, or resell provider capacity. - Operate as a general-purpose secret manager. - Execute AI models or provide a completed agent platform. ## Separate projects, one contract The API and generated SDKs live in the Wildflower source project. This website is a separate static Astro project. The OpenAPI document and generated provenance connect the public documentation to the implemented contract. ## Read the evidence - [Provider-neutral sandbox API overview](https://wildflower.computer/sandbox-api/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) - [Tested provider compatibility](https://wildflower.computer/compatibility/) - [Current contract changelog](https://wildflower.computer/changelog/) > **Wildflower Computer** — Canonical entity Canonical website: wildflower.computer --- title: "A record with roots." description: "Wildflower Computer contract history and current generated snapshot for OpenAPI 0.8.0, 5 SDKs, and 12 providers." canonical: "https://wildflower.computer/changelog/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # A record with roots. Current generated facts come directly from the SDK contract. Accepted compatibility baselines remain append-only, so a new release cannot quietly erase the one before it. ## Current generated snapshot **8**public operations **51**public models **12**provider adapters **5**generated SDKs This snapshot is the exact contract rendered by the website. It may be newer than the last accepted compatibility baseline while a release is under review. | SDK target | Current version | Distribution | | --- | --- | --- | | TypeScript | `0.8.0` | source-only | | Python | `0.8.0` | source-only | | Rust | `0.8.0` | source-only | | Go | `0.8.0` | source-only | | Zig | `0.8.0` | source-only | ## Accepted compatibility history `sdk:compat:accept --write` appends each accepted baseline locally. Entries record exact package versions, source provenance, compatibility classification, and machine-detected contract changes. initial`fda4c3c41bb5` ### OpenAPI 0.7.0 typescript0.7.0 python0.7.0 rust0.7.0 go0.7.0 zig0.7.0 The initial accepted contract snapshot. ## What acceptance does not do Accepting a compatibility baseline does not publish a package, create a Git tag, deploy the API, or deploy this website. Those remain separate, explicitly reviewed local release actions. ## Current references - [OpenAPI and schema provenance](https://wildflower.computer/openapi/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [Generated SDK targets](https://wildflower.computer/sdk/) > **API v1 / OpenAPI 0.8.0** — Current generated snapshot Source 788b7325a454. --- title: "Daytona vs Fly.io Sprites." description: "Compare Daytona and Fly.io Sprites sandbox behavior through Wildflower Computer, including images, TTLs, output streams, and portability limits." canonical: "https://wildflower.computer/compare/daytona-vs-sprites/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Daytona vs Fly.io Sprites. Daytona accepts container images and rounded TTL minutes. Sprites exposes a fixed environment with automatic sleep and separate output streams. Wildflower Computer keeps the surrounding lifecycle calls the same while leaving these differences visible. ## Capability comparison | Concern | Daytona | Fly.io Sprites | | --- | --- | --- | | Provider value | `daytona` | `sprites` | | Image | The image field is a container image. The adapter generates a one-line Dockerfile using that image. | Sprites uses a fixed environment. The adapter rejects image rather than silently ignoring it. | | Lifetime | The API accepts seconds and the adapter rounds them up to whole Daytona TTL minutes. | Sprites automatically sleeps and persists until deletion. The adapter rejects timeout. | | Command output | Daytona returns combined command output. The adapter places it in stdout and returns an empty stderr. | The adapter preserves separate stdout and stderr frames and returns the command exit code. | | Credential | Daytona API key | Fly.io Sprites API token | ## One create endpoint, explicit provider input The endpoint and authentication boundary are shared. The request body changes only where the selected provider's supported creation inputs differ. ```bash # Daytona curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $LEFT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "daytona", "image": "ubuntu:22.04", "timeout": 300}' # Fly.io Sprites curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $RIGHT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "sprites"}' ``` ## What is portable - The create, get, runCommand, and delete methods across generated SDKs. - Normalized sandbox IDs, provider values, status, and metadata. - Command, working-directory, and environment inputs for execution. - Normalized stdout, stderr, and exitCode response fields. ## What is not automatically portable Existing sandbox state is not transferred between Daytona and Fly.io Sprites. An ID stays bound to the provider selected at creation. Images and lifetimes also retain the semantics shown above. ## Current limitations ### Daytona - Timeout precision is one minute after adapter rounding. - Standard output and standard error are not separable in the synchronous Daytona command response. - The sandbox remains attached to Daytona for its complete lifecycle. ### Fly.io Sprites - Image selection is not supported by the current adapter. - A sandbox lifetime timeout is not supported by the current adapter. - A cold Sprite can initially report stopped and wakes on its first command. ## Read the underlying support pages - [Daytona sandbox API capabilities and limitations](https://wildflower.computer/providers/daytona/) - [Fly.io Sprites sandbox API capabilities and limitations](https://wildflower.computer/providers/sprites/) - [Full provider compatibility matrix](https://wildflower.computer/compatibility/) - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) > **Create · get · runCommand · delete** — Shared lifecycle Provider choice remains fixed for the lifetime of each sandbox. --- title: "E2B vs Daytona." description: "Compare E2B and Daytona sandbox behavior through the Wildflower Computer provider-neutral API, including images, timeouts, output, and portability limits." canonical: "https://wildflower.computer/compare/e2b-vs-daytona/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # E2B vs Daytona. E2B uses template IDs and preserves separate output streams. Daytona accepts container images, rounds timeout seconds to TTL minutes, and returns combined command output. Wildflower Computer keeps the surrounding lifecycle calls the same while leaving these differences visible. ## Capability comparison | Concern | E2B | Daytona | | --- | --- | --- | | Provider value | `e2b` | `daytona` | | Image | The image field is interpreted as an E2B template ID. It defaults to base when omitted. | The image field is a container image. The adapter generates a one-line Dockerfile using that image. | | Lifetime | The timeout is a sandbox lifetime in seconds and defaults to 300 when omitted. | The API accepts seconds and the adapter rounds them up to whole Daytona TTL minutes. | | Command output | The adapter preserves separate stdout and stderr streams and returns the command exit code. | Daytona returns combined command output. The adapter places it in stdout and returns an empty stderr. | | Credential | E2B API key | Daytona API key | ## One create endpoint, explicit provider input The endpoint and authentication boundary are shared. The request body changes only where the selected provider's supported creation inputs differ. ```bash # E2B curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $LEFT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "e2b", "image": "base", "timeout": 300}' # Daytona curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $RIGHT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "daytona", "image": "ubuntu:22.04", "timeout": 300}' ``` ## What is portable - The create, get, runCommand, and delete methods across generated SDKs. - Normalized sandbox IDs, provider values, status, and metadata. - Command, working-directory, and environment inputs for execution. - Normalized stdout, stderr, and exitCode response fields. ## What is not automatically portable Existing sandbox state is not transferred between E2B and Daytona. An ID stays bound to the provider selected at creation. Images and lifetimes also retain the semantics shown above. ## Current limitations ### E2B - The image value is a template ID, not a general container image. - The sandbox remains attached to E2B for its complete lifecycle. - Wildflower Computer does not migrate E2B filesystem state to another provider. ### Daytona - Timeout precision is one minute after adapter rounding. - Standard output and standard error are not separable in the synchronous Daytona command response. - The sandbox remains attached to Daytona for its complete lifecycle. ## Read the underlying support pages - [E2B sandbox API capabilities and limitations](https://wildflower.computer/providers/e2b/) - [Daytona sandbox API capabilities and limitations](https://wildflower.computer/providers/daytona/) - [Full provider compatibility matrix](https://wildflower.computer/compatibility/) - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) > **Create · get · runCommand · delete** — Shared lifecycle Provider choice remains fixed for the lifetime of each sandbox. --- title: "E2B vs Fly.io Sprites." description: "Compare E2B and Fly.io Sprites through one sandbox API, including environment selection, lifetimes, command output, and persistent state." canonical: "https://wildflower.computer/compare/e2b-vs-sprites/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # E2B vs Fly.io Sprites. E2B accepts a template and timeout. Sprites uses a fixed environment, rejects timeout, and can automatically wake from a stopped state on execution. Wildflower Computer keeps the surrounding lifecycle calls the same while leaving these differences visible. ## Capability comparison | Concern | E2B | Fly.io Sprites | | --- | --- | --- | | Provider value | `e2b` | `sprites` | | Image | The image field is interpreted as an E2B template ID. It defaults to base when omitted. | Sprites uses a fixed environment. The adapter rejects image rather than silently ignoring it. | | Lifetime | The timeout is a sandbox lifetime in seconds and defaults to 300 when omitted. | Sprites automatically sleeps and persists until deletion. The adapter rejects timeout. | | Command output | The adapter preserves separate stdout and stderr streams and returns the command exit code. | The adapter preserves separate stdout and stderr frames and returns the command exit code. | | Credential | E2B API key | Fly.io Sprites API token | ## One create endpoint, explicit provider input The endpoint and authentication boundary are shared. The request body changes only where the selected provider's supported creation inputs differ. ```bash # E2B curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $LEFT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "e2b", "image": "base", "timeout": 300}' # Fly.io Sprites curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $RIGHT_PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "sprites"}' ``` ## What is portable - The create, get, runCommand, and delete methods across generated SDKs. - Normalized sandbox IDs, provider values, status, and metadata. - Command, working-directory, and environment inputs for execution. - Normalized stdout, stderr, and exitCode response fields. ## What is not automatically portable Existing sandbox state is not transferred between E2B and Fly.io Sprites. An ID stays bound to the provider selected at creation. Images and lifetimes also retain the semantics shown above. ## Current limitations ### E2B - The image value is a template ID, not a general container image. - The sandbox remains attached to E2B for its complete lifecycle. - Wildflower Computer does not migrate E2B filesystem state to another provider. ### Fly.io Sprites - Image selection is not supported by the current adapter. - A sandbox lifetime timeout is not supported by the current adapter. - A cold Sprite can initially report stopped and wakes on its first command. ## Read the underlying support pages - [E2B sandbox API capabilities and limitations](https://wildflower.computer/providers/e2b/) - [Fly.io Sprites sandbox API capabilities and limitations](https://wildflower.computer/providers/sprites/) - [Full provider compatibility matrix](https://wildflower.computer/compatibility/) - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) > **Create · get · runCommand · delete** — Shared lifecycle Provider choice remains fixed for the lifetime of each sandbox. --- title: "Compare what changes behind the API." description: "Compare supported sandbox providers through the Wildflower Computer API using documented differences in images, lifetimes, output, and portability." canonical: "https://wildflower.computer/compare/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Compare what changes behind the API. Wildflower Computer keeps the lifecycle stable while documenting provider differences that still matter. These comparisons use current adapter behavior and do not claim unsupported performance or cost advantages. ## Provider comparisons - [E2B vs Daytona sandbox APIs](https://wildflower.computer/compare/e2b-vs-daytona/) — **E2B****Daytona** — E2B uses template IDs and preserves separate output streams. Daytona accepts container images, rounds timeout seconds to TTL minutes, and returns combined command output. - [E2B vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/e2b-vs-sprites/) — **E2B****Fly.io Sprites** — E2B accepts a template and timeout. Sprites uses a fixed environment, rejects timeout, and can automatically wake from a stopped state on execution. - [Daytona vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/daytona-vs-sprites/) — **Daytona****Fly.io Sprites** — Daytona accepts container images and rounded TTL minutes. Sprites exposes a fixed environment with automatic sleep and separate output streams. ## What these pages answer - What the shared create request means for each provider. - How image and lifetime inputs differ. - How command output maps into stdout, stderr, and exitCode. - Which differences prevent state from being portable automatically. ## Use the evidence directly - [Review tested provider compatibility](https://wildflower.computer/compatibility/) - [Inspect the machine-readable OpenAPI contract](https://wildflower.computer/openapi/) - [Design a provider-portable sandbox integration](https://wildflower.computer/guides/provider-portability/) > **Behavior, not hype** — Comparison policy No unsupported speed, reliability, pricing, or capability rankings. --- title: "Tested provider compatibility." description: "Detailed Wildflower Computer compatibility evidence for 5 providers, with OpenAPI coverage for all 12 supported sandbox backends." canonical: "https://wildflower.computer/compatibility/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Tested provider compatibility. The Wildflower Computer API versions its own contract under v1. Adapter tests pin the upstream request and response shapes listed here; callers do not select these provider contract versions. ## Detailed compatibility matrix | Provider | Evidence | Create image | Lifetime | Command output | Connection context | | --- | --- | --- | --- | --- | --- | | [Blaxel](https://wildflower.computer/providers/blaxel/) | Preview / contract-tested | Runtime image supported | Timeout sent as runtime TTL | Separate stdout and stderr | X-Provider-Workspace | | [E2B](https://wildflower.computer/providers/e2b/) | Preview / contract-tested | Template ID supported | Timeout in seconds | Separate stdout and stderr | None | | [Daytona](https://wildflower.computer/providers/daytona/) | Launch tier / live-proven | Container image supported | Rounded up to TTL minutes | Combined output in stdout | None | | [Runloop](https://wildflower.computer/providers/runloop/) | Preview / contract-tested | Blueprint name supported | Maximum 172800 seconds | Separate stdout and stderr | None | | [Fly.io Sprites](https://wildflower.computer/providers/sprites/) | Launch tier / live-proven | Fixed environment | No timeout option | Separate stdout and stderr | None | OpenAPI 0.8.0 additionally covers AWS AgentCore, ASCII Box, Cloudflare Sandbox, Novita Agent Sandbox, Modal, Smol Machines, and Vercel Sandbox. Their exact create inputs and capability descriptors are available in the [generated provider reference](https://wildflower.computer/docs/reference/#providers). These adapters have keyless contract coverage, not current live credential proof. Daytona and Fly.io Sprites are the initial launch tier and completed the full persistent lifecycle on private staging on July 28, 2026. All other adapters remain preview until an equivalent current credential smoke is recorded. ## Tested upstream contracts ### Blaxel - [Blaxel sandbox lifecycle and process APIs, version 2026-04-28](https://docs.blaxel.ai/api-reference/compute/create-sandbox) ### E2B - [E2B management OpenAPI 0.1.0 contract](https://github.com/e2b-dev/E2B/blob/main/spec/openapi.yml) ### Daytona - [Daytona platform OpenAPI 1.0 contract](https://www.daytona.io/docs/openapi.json) - [Daytona toolbox OpenAPI contract](https://www.daytona.io/docs/toolbox-openapi.json) ### Runloop - [Runloop published OpenAPI 0.1 contract](https://docs.runloop.ai/openapi-specs/stainless-processed-openapi.json) ### Fly.io Sprites - [Fly.io Sprites development API](https://docs.sprites.dev/api/dev-latest/) ## Shared response contract Sandbox responses expose a normalized ID, provider, status, and metadata. Execution responses expose sandboxId, stdout, stderr, and exitCode. Provider-native IDs remain available at`metadata.nativeProviderId`, and provider runtime versions appear at `metadata.nativeProviderVersion` when available. ## Shared error contract The current stable error code set includes invalid requests and idempotency keys, idempotency conflicts or uncertain outcomes, missing keys, invalid sandbox IDs, provider validation failures, authentication failures, missing sandboxes, known unavailable provider operations, rate limits, provider unavailability, provider errors, and internal errors. A deep profile check can persist an operation-specific reason and remediation; known failures are rejected locally. Provider response bodies are not forwarded because they may contain credentials or customer content. ## Compatibility is not failover A supported adapter means that the lifecycle is implemented and covered by contract tests. Wildflower Computer does not retry on a different provider, migrate an existing sandbox, or promise equivalent performance and pricing. ## Machine-readable evidence - [Download OpenAPI 0.8.0 as JSON](https://wildflower.computer/openapi.json) - [Download the generated SDK source model](https://wildflower.computer/contracts/sdk-model.json) - [Download shared SDK contract fixtures](https://wildflower.computer/contracts/contract-fixtures.json) - [Download provider usage and cost coverage](https://wildflower.computer/provider-observability.json) > **Fail closed on drift** — Compatibility rule Upstream differences stay inside a focused provider adapter. --- title: "Work inside the sandbox you already grew." description: "Run bounded commands and read or write UTF-8 and base64 files in an existing persistent Wildflower Computer sandbox." canonical: "https://wildflower.computer/docs/commands-and-files/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Work inside the sandbox you already grew. Commands and files operate on an existing sandbox ID. They do not create a replacement environment, so filesystem changes remain available to later calls for the lifetime of that provider sandbox. ## Run a command Supply a shell command plus an optional existing working directory and per-command environment. The environment map applies only to this command; it is not a durable secret store. ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/$SANDBOX_ID/exec" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "command": "printf hello && exit 7", "cwd": "/tmp", "env": { "FLOWER_COLOR": "orange" } }' ``` > **A non-zero exit is still an API success** > > A completed process returns HTTP success with `exitCode`,`stdout`, and `stderr`. Check the exit code in your application. Some providers expose only combined output; their adapter returns that text in `stdout` and an empty`stderr`. ## Write, then read a file The destination parent directory must already exist. Read and write use the same generated `FileEncoding` choices:`utf8 and base64`. UTF-8 is the default. Use base64 when arbitrary bytes must survive JSON. ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/$SANDBOX_ID/files/write" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{"path":"/tmp/hello.txt","content":"hello","encoding":"utf8"}' curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/$SANDBOX_ID/files/read" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{"path":"/tmp/hello.txt","encoding":"utf8"}' ``` ## Choose the right primitive ### Command Best for tools, pipelines, package managers, and operations whose exit code matters. - [Command operation reference](https://wildflower.computer/docs/reference/run-sandbox-command/) ### Write file Best when your application already has bounded content and needs an exact destination path. - [Write operation reference](https://wildflower.computer/docs/reference/write-sandbox-file/) ### Read file Best for retrieving one bounded result without parsing command output. - [Read operation reference](https://wildflower.computer/docs/reference/read-sandbox-file/) ## Keep provider access available A connected project profile lets later processes address the sandbox using only the Wildflower bearer key. If you created it with an inline provider credential, a new process must receive that provider access and any required connection context again. --- title: "Small concepts, explicit behavior." description: "Understand Wildflower Computer lifecycle, persistence, credentials, routeable IDs, connection context, errors, and model boundaries." canonical: "https://wildflower.computer/docs/concepts/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Small concepts, explicit behavior. Wildflower Computer normalizes the common persistent sandbox lifecycle while keeping meaningful provider differences visible. These concepts are the contract your integration can rely on today. ## Persistent lifecycle Creating a sandbox returns a provider-backed resource. Later `get` and `runCommand` calls address that same native sandbox, so its filesystem and process-level state persist until deletion or provider-side lifetime behavior ends it. 1. **Create** a sandbox for one explicit provider. 2. **Get** its current normalized state when needed. 3. **Run commands** in the existing sandbox through the`/exec` HTTP endpoint. 4. **Delete** it when your work is complete. > **No failover** > > A sandbox stays attached to the provider selected at creation. Wildflower Computer does not automatically move or fail over a sandbox between providers. ## Capability discovery `GET /v1/providers` returns a typed catalog of stable provider IDs, display names, normalized published prices, image and timeout modes, output streams, and lifecycle capabilities. It requires the Wildflower Computer bearer key, but not a sandbox-provider credential. Callers can inspect this catalog instead of inferring behavior or pricing from provider names. ## Idempotent sandbox creation Create accepts an optional caller-generated `Idempotency-Key`. A completed request replayed with the same key, body, and non-secret provider connection context returns the original sandbox. Reusing a key with different input, racing a concurrent request, or retrying an outcome the API cannot prove fails closed. The returned `metadata.operationId` identifies the logical create operation. Static-key mode keeps idempotency records in process memory; configured PostgreSQL keeps them across API restarts. Provider-profile storage is a separate encrypted project-scoped boundary. ## Routeable sandbox IDs Wildflower Computer returns an opaque ID with a provider prefix, such as`wf_e2b_…`, `wf_modal_…`, or`wf_vercel_…`. The API uses that ID to route later operations to the correct adapter. Responses also expose the provider-native identifier at`metadata.nativeProviderId` for debugging. When the provider exposes a runtime or protocol version, it can appear at `metadata.nativeProviderVersion`. ## Two credential boundaries The API and provider credentials have different jobs: - `Authorization: Bearer ` authenticates the caller to the Wildflower Computer API. - A connected project profile or `X-Provider-Api-Key` inline override supplies the customer's provider credential. PostgreSQL mode encrypts connected project profiles at rest. Static local mode retains profiles in process memory. Inline overrides are ephemeral. ### Provider connection context Blaxel requires a workspace; bridge providers require a bridge URL; Vercel requires team and project IDs. Profiles store this non-secret routing context, while generated clients keep inline values typed and separate from JSON. ### Inline SDK overrides Generated SDKs keep inline provider access within the current client process for later lifecycle calls. A fresh process should use a connected project profile or explicitly receive the same provider access again. See the [generated TypeScript lifecycle](https://wildflower.computer/sdk/typescript/) for the current method names and credential-safe example. ## Models and sandboxes An AI model decides what work to do. A sandbox supplies an isolated environment where commands can run. Your application can pair any model integration with a supported sandbox provider, but those are separate decisions. > **Current product boundary** > > Wildflower Computer does not execute models and does not implement an agent runtime. ## Normalized status Provider state is mapped to a common status vocabulary:`creating`, `running`, `paused`,`stopped`, `deleting`, `deleted`,`error`, or `unknown`. A cold Sprite can initially report`stopped` and wakes on its first command. --- title: "Run your first sandbox." description: "Create, execute in, inspect, and delete a persistent sandbox with the Wildflower Computer API using TypeScript or direct HTTP requests." canonical: "https://wildflower.computer/docs/getting-started/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Run your first sandbox. This walkthrough targets a locally running Wildflower Computer API and E2B. The same lifecycle works with Blaxel, Daytona, Runloop, or Fly.io Sprites when you change the typed provider input and credential. > **Before you start** > > Follow [the local installation guide](https://wildflower.computer/docs/installation/) to run the API at `http://localhost:8080`. Set its bearer key and have a credential for the sandbox provider you want to use. ## 1. Set the request credentials Keep literal provider credentials out of command history. These examples read them from environment variables and send them separately from the Wildflower Computer bearer key. ```bash export WILDFLOWER_URL="http://localhost:8080" export WILDFLOWER_API_KEY="" export E2B_API_KEY="" ``` ## 2. Use the TypeScript SDK Make `@wildflowercomputer/sdk` available from the current source repository, then run this lifecycle. The generated package is currently versioned as `0.8.0` with distribution status `source-only`. ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.create({ provider: "e2b", image: "base", timeout: 300, }); const handle = client.sandboxes.attach(sandbox.id); await handle.waitUntilReady(); const result = await handle.runCommand({ command: "echo hello", }); await handle.writeText("/tmp/hello.txt", "hello"); console.log(result.stdout, result.stderr, result.exitCode); await handle.delete(); ``` This inline example lets the SDK reuse the provider key in process memory. A connected project profile lets a fresh process resolve the same provider access without embedding the secret in application code. ## 3. Or use the HTTP API directly The TypeScript package is optional. This cURL sequence performs the same create, run-command, and delete operations and makes the language-independent API visible. ```bash export WILDFLOWER_URL="http://localhost:8080" export 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" ``` ## 4. Inspect persistent state Before deletion, use `GET /v1/sandboxes/{id}` to read the provider and current normalized status. Provider access comes from the connected profile or the inline credential used by this client. ```bash curl -fsS "$WILDFLOWER_URL/v1/sandboxes/$sandbox_id" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" ``` ## Inspect provider identity, pricing, and capabilities The authenticated provider catalog returns each stable provider ID, display name, normalized published price, source caveat, image and timeout modes, output streams, and supported lifecycle behavior without requiring a provider credential. ```bash curl -fsS "$WILDFLOWER_URL/v1/providers" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" ``` ## Change providers Change the typed provider input and supply that provider's credential and connection context. The [provider-profile guide](https://wildflower.computer/docs/provider-profiles/) and [generated provider directory](https://wildflower.computer/docs/reference/providers/e2b/) stay synchronized with every supported adapter. --- title: "Build against the sandbox boundary." description: "Documentation for the Wildflower Computer provider-neutral sandbox API and generated TypeScript, Python, Rust, Go, and Zig SDKs." canonical: "https://wildflower.computer/docs/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Build against the sandbox boundary. Wildflower Computer is a provider-neutral sandbox API for 12 supported providers using customer-owned credentials. Use the HTTP contract directly or through a generated SDK. - [Install and run locally](https://wildflower.computer/docs/installation/) — 01 / Start — Start the API honestly from its current pre-release source. - [Run a complete lifecycle](https://wildflower.computer/docs/getting-started/) — 02 / Tutorial — Create a sandbox, execute a command, then delete it safely. - [Connect provider access](https://wildflower.computer/docs/provider-profiles/) — 03 / Guide — Keep customer-owned credentials out of lifecycle payloads. - [Run commands and transfer files](https://wildflower.computer/docs/commands-and-files/) — 04 / Guide — Work inside one persistent provider sandbox. - [Retry what you can prove](https://wildflower.computer/docs/reliability/) — 05 / Guide — Use idempotency, reconciliation, and response metadata safely. - [Refresh documentation locally](https://wildflower.computer/docs/local-ci/) — 06 / Guide — Regenerate SDK facts and pass every gate without hosted CI. - [Diagnose a failed boundary](https://wildflower.computer/docs/troubleshooting/) — 07 / Guide — Map stable error codes to the next useful action. - [Understand the boundary](https://wildflower.computer/docs/concepts/) — 08 / Explanation — Learn how IDs, credentials, persistence, and provider selection work. - [Compare providers](https://wildflower.computer/docs/providers/) — 09 / Reference — See the current supported parameters and execution behavior. - [Inspect every operation and model](https://wildflower.computer/docs/reference/) — 10 / Generated reference — Browse the exact contract shared by all 5 generated SDKs. ## Current API surface Every sandbox operation requires the Wildflower Computer bearer key. Provider access comes from a connected project profile or an inline credential override. | `GET` | [/v1/sandboxes](https://wildflower.computer/docs/reference/list-sandboxes/) | List project sandboxes | | --- | --- | --- | | `POST` | [/v1/sandboxes](https://wildflower.computer/docs/reference/create-sandbox/) | Create a persistent running sandbox | | `GET` | [/v1/sandboxes/{id}](https://wildflower.computer/docs/reference/get-sandbox/) | Get a sandbox | | `POST` | [/v1/sandboxes/{id}/exec](https://wildflower.computer/docs/reference/run-sandbox-command/) | Run a command in an existing sandbox | | `POST` | [/v1/sandboxes/{id}/files/read](https://wildflower.computer/docs/reference/read-sandbox-file/) | Read a file from an existing sandbox | | `POST` | [/v1/sandboxes/{id}/files/write](https://wildflower.computer/docs/reference/write-sandbox-file/) | Write a file in an existing sandbox | | `DELETE` | [/v1/sandboxes/{id}](https://wildflower.computer/docs/reference/delete-sandbox/) | Delete a sandbox | | `GET` | [/v1/providers](https://wildflower.computer/docs/reference/list-providers/) | List provider capabilities | ## What is intentionally outside the API The MVP does not include automatic provider failover, billing, stored provider resale, model execution, or an agent runtime. Those absences are part of the current product boundary, not hidden features. --- title: "Grow a local Wildflower." description: "Run the Wildflower Computer API locally and choose a generated TypeScript, Python, Rust, Go, and Zig SDK or direct HTTP." canonical: "https://wildflower.computer/docs/installation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Grow a local Wildflower. The current pre-release path runs the API and generated clients from source. It gives contributors and approved preview users a complete local sandbox boundary without pretending that hosted signup or public package installation already exists. > **Pre-release availability** > > The source repositories and generated SDK packages are currently private and marked `source-only`. Public registry installation and hosted API access require separate launch approval. This guide is fully runnable for developers who already have repository access. ## Requirements The narrow local path needs Node.js, pnpm through Corepack, Rust, and one sandbox-provider credential. Full multi-language validation additionally uses Python, uv, Go, Zig, PostgreSQL, and ClickHouse. ```bash node --version # v24.18.x corepack pnpm --version # 11.17.x rustc --version # 1.97.1 ``` ## Start the API From the root of the `wildflower` source checkout, install the JavaScript workspace, create a strong local bearer key, and start the Rust API. Without `DATABASE_URL`, this key authenticates the entire local process and connected provider profiles remain in memory. ```bash corepack pnpm install export WILDFLOWER_API_KEY="$(openssl rand -hex 32)" cargo run --package wildflower-api ``` ## Verify the public boundary Health and OpenAPI are public. Sandbox lifecycle routes require the bearer key created above. ```bash export WILDFLOWER_URL="http://localhost:8080" curl -fsS "$WILDFLOWER_URL/healthz" | jq curl -fsS "$WILDFLOWER_URL/openapi.json" | jq '.info.version' ``` ## Choose a client ### TypeScript `@wildflowercomputer/sdk` · version `0.8.0` Node.js 20 or newer - [Open the generated SDK guide](https://wildflower.computer/sdk/typescript/) ### Python `wildflower-computer` · version `0.8.0` Python 3.11 or newer - [Open the generated SDK guide](https://wildflower.computer/sdk/python/) ### Rust `wildflower-computer` · version `0.8.0` Rust 1.88 or newer - [Open the generated SDK guide](https://wildflower.computer/sdk/rust/) ### Go `github.com/dnosk/wildflower/sdks/go` · version `0.8.0` Go 1.26 or newer - [Open the generated SDK guide](https://wildflower.computer/sdk/go/) ### Zig `wildflower` · version `0.8.0` Zig 0.16.0 - [Open the generated SDK guide](https://wildflower.computer/sdk/zig/) ### Direct HTTP Use the same OpenAPI contract without installing a generated package. - [Download the OpenAPI document](https://wildflower.computer/openapi/) ## What happens next Connect provider access Store one project-scoped profile or use an inline override. Run the lifecycle Create, execute, inspect, and delete one persistent sandbox. Validate locally Run contract and SDK checks before any release action. --- title: "One local command closes the documentation loop." description: "Generate SDKs, synchronize contract-addressed documentation, and run every Wildflower website quality gate locally without GitHub Actions." canonical: "https://wildflower.computer/docs/local-ci/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # One local command closes the documentation loop. The API repository owns executable contract facts. The website owns the reading experience. A local refresh verifies the former, synchronizes only generated artifacts, and validates the latter before anything is committed. > **No hosted CI** > > This pipeline does not use GitHub Actions, scheduled jobs, automatic pull requests, or hosted CI credentials. It also never commits, pushes, deploys, or publishes a package for you. ## 1. Prove the API and SDK source Generate locally, verify deterministic output, then run the repository's complete gate. The current generated bundle identifies generator`0.7.0`, OpenAPI`0.8.0`, and package versions`typescript=0.8.0, python=0.8.0, rust=0.8.0, go=0.8.0, zig=0.8.0`. ```bash cd /path/to/wildflower corepack pnpm sdk:generate corepack pnpm sdk:check corepack pnpm ci:local ``` ## 2. Refresh the website Point the web checkout at an adjacent clean API checkout. The command fetches `origin/main`, fast-forwards a clean local`main` when possible, requires exact remote parity, runs`sdk:check`, copies content-addressed artifacts, and runs the complete website gate. ```bash cd /path/to/wildflower-web WILDFLOWER_SOURCE_DIR=/path/to/wildflower \ corepack pnpm docs:refresh ``` ## What the website gate covers Source integrity Exact API revision, generated SDK provenance, contract digests, package versions, and compatibility history. Application quality Formatting, lint, tests, types, static build, accessibility, SEO, and security policy. The build also creates page Markdown, stable anchors, search data, and the complete LLM corpus from rendered documentation. Deployment shape Local Cloudflare staging and production dry runs—without deploying either environment. ## Review the resulting diff A public contract or generated SDK change updates its synchronized JSON, provenance, and affected generated pages. An unrelated API commit with identical artifact bytes produces no website content diff. Authored tutorials remain hand-written and consume generated values through typed helpers. Open any built documentation page and use **Copy Page** to verify the sibling Markdown. The SEO check requires every canonical docs route to appear in the Markdown directory, search index, `llms.txt`, and`llms-full.txt`. | Failure | Meaning | | --- | --- | | Dirty API checkout | Commit, move, or discard that work explicitly before refreshing. | | API is not exact `origin/main` | Reconcile the source branch; detached or divergent work is not moved. | | `sdk:check` drift | Regenerate and review SDK output in the API repository first. | | Contract digest mismatch | Run the write-mode refresh and review the generated website diff. | | Website gate failure | Fix it locally; the command does not hide or remotely delegate it. | --- title: "Useful estimates, explicit gaps, reproducible comparisons." description: "Understand Wildflower Computer cost fidelity, provider-specific billing-signal gaps, credential readiness, latency clocks, and the reproducible provider benchmark protocol." canonical: "https://wildflower.computer/docs/provider-observability/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Useful estimates, explicit gaps, reproducible comparisons. Provider pricing, measured usage, and final invoice cost are different facts. Wildflower keeps them separate in the API, analytics schema, and benchmark output so a convenient estimate cannot quietly become a billing claim. Available now ## List-price estimate Versioned normalized price pinned when the sandbox is created and prorated over Wildflower-observed wall time. Useful for comparisons and anomaly detection; confidence is low. Provider evidence ## Provider-reported A provider-owned usage meter or amount. It remains unavailable until an authoritative provider API, scope, identity, and lag are integrated. Financial truth ## Invoice-reconciled A finalized billing export or invoice matched back to a sandbox. It remains separate from both estimates and operational telemetry. > **Never use the estimate as an invoice** > > Provider billing minimums, actual shape and CPU use, idle policy, storage, network, credits, subscriptions, discounts, tax, lag, and adjustments can all create discrepancies. Wildflower does not use the estimate for collection, balances, or hard quota enforcement. ## Read cost fidelity from the API Usage remains available after sandbox deletion because the estimate uses the project-scoped registry and captured pricing evidence, not another provider lifecycle request. A later catalog refresh cannot rewrite a new sandbox’s historical estimate. Older rows without a creation snapshot explicitly report `current_catalog_fallback`. ```bash curl -fsS \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ "$WILDFLOWER_URL/v1/sandboxes/$SANDBOX_ID/usage" ``` ```json { "schemaVersion": "wildflower.sandbox-usage.v2", "status": "estimated", "confidence": "low", "listPriceEstimateUsd": "0.041400", "providerReported": { "status": "unavailable", "amountUsd": null, "reason": "No authoritative per-sandbox amount is integrated." }, "invoiceReconciled": { "status": "unavailable", "amountUsd": null, "reason": "No finalized invoice amount is reconciled." }, "priceSource": { "basis": "sandbox_creation_snapshot", "capturedAt": "2026-07-28T00:00:00Z", "url": "https://e2b.dev/pricing", "digest": "" } } ``` ## Provider billing-signal coverage This table is synchronized from the API repository. “Unavailable” can mean the provider has no documented signal, the signal is aggregate-only, or a distinct billing credential and identity are required. Those cases are not collapsed into one optimistic boolean. ```bash curl -fsS \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ "$WILDFLOWER_URL/v1/provider-observability" ``` | Provider | Best signal | Wildflower state | Granularity / lag | What is missing | | --- | --- | --- | --- | --- | | [AWS AgentCore](https://wildflower.computer/docs/reference/providers/agentcore/)Live auth not verified | [Provider Telemetry](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-runtime-metrics.html) | Additional Credentials Required | Sessionup to 60 minutes for resource telemetry | **AgentCore exposes usage telemetry, not an authoritative per-session invoice amount through the sandbox lifecycle API.**The current bridge credential does not grant Wildflower CloudWatch access.AWS states that observability telemetry can differ from authoritative billing. | | [Blaxel](https://wildflower.computer/docs/reference/providers/blaxel/)Live auth not verified | [Provider Billing Api](https://docs.blaxel.ai/Security/Billing-Explorer-API) | Additional Scope Required | Resourcea few minutes or longer under load | **The provider has a resource-centric Billing Explorer API, but Wildflower requires a separately verified billing scope before querying it.**Wildflower does not assume a sandbox lifecycle token has account billing access.Billing data is delayed and is unsuitable for hard real-time enforcement. | | [ASCII Box](https://wildflower.computer/docs/reference/providers/box/)Live auth not verified | [No Documented Api](https://box.ascii.dev/) | Estimate Only | Noneunknown | **Only the published fixed-VM rate is available to Wildflower.**No public per-box usage or cost API is documented.The lifecycle response does not include metered usage or cost. | | [Cloudflare Sandbox](https://wildflower.computer/docs/reference/providers/cloudflare/)Live auth not verified | [Provider Analytics Api](https://developers.cloudflare.com/analytics/graphql-api/tutorials/querying-container-metrics/) | Additional Credentials Required | Instanceanalytics pipeline delay | **Cloudflare exposes per-instance usage metrics, but the current bridge contract does not expose the required analytics identity or credential.**The current bridge profile stores neither an account identifier nor an Analytics API token.GraphQL usage values estimate billing and are not an invoice. | | [E2B](https://wildflower.computer/docs/reference/providers/e2b/)Live auth not verified | [Dashboard Only](https://e2b.dev/docs/billing) | Estimate Only | Accountnot documented as a per-sandbox API contract | **Wildflower can estimate published rates but cannot retrieve an authoritative per-sandbox amount.**E2B documents dashboard usage and cost but no per-sandbox billing API used by Wildflower.Lifecycle responses do not include metered usage or cost. | | [Novita Agent Sandbox](https://wildflower.computer/docs/reference/providers/novita/)Live auth not verified | [Dashboard Export](https://novita.ai/docs/guides/sandbox-pricing) | Estimate Only | Accountnot documented as a per-sandbox API contract | **Wildflower has published CPU and memory rates but no authoritative per-sandbox billing response.**Billing detail is documented for the console and export flow, not as a per-sandbox API integrated by Wildflower.Lifecycle responses do not include metered usage or cost. | | [Daytona](https://wildflower.computer/docs/reference/providers/daytona/)Live auth not verified | [Dashboard Only](https://www.daytona.io/docs/billing) | Estimate Only | Sandboxbilling settlement may lag | **Per-sandbox billing details exist in the provider UI but are not returned through the current adapter API.**Daytona documents per-sandbox CPU seconds, RAM GB-seconds, disk, and cost in its billing UI, but Wildflower does not have a documented API response for those values.Lifecycle responses do not include metered usage or cost. | | [Modal](https://wildflower.computer/docs/reference/providers/modal/)Live auth not verified | [Aggregate Billing Report](https://modal.com/docs/guide/billing) | Unsupported Per Sandbox | Workspace Hour Or Dayseveral minutes | **Modal does not provide the per-sandbox provider-reported cost needed by Wildflower's common usage contract.**Modal's programmatic billing reports are workspace aggregates, not an authoritative per-sandbox record.Reports may exclude credits, reservations, and other final invoice adjustments.The current Modal bridge does not expose billing-report access. | | [Runloop](https://wildflower.computer/docs/reference/providers/runloop/)Live auth not verified | [No Documented Api](https://runloop.ai/pricing) | Estimate Only | Noneunknown | **Only published resource rates are available to Wildflower.**No public per-devbox usage or cost API is documented for Wildflower to integrate.Lifecycle responses do not include metered usage or cost. | | [Smol Machines](https://wildflower.computer/docs/reference/providers/smol/)Live auth not verified | [Per Machine Metered Usage And Cost](https://smolmachines.com/docs/cloud-api) | Provider Signal Not Integrated | Machineprovider-defined | **Smol documents per-machine metered cost, but Wildflower has not integrated and live-verified that signal; comparable public unit rates are not published.**Wildflower has not yet integrated Smol's documented per-machine metered usage and cost signal.The lifecycle adapter response does not prove that every credential can read the metered cost fields.Smol does not publish comparable CPU or memory unit rates, so a normalized list-price estimate is also unavailable. | | [Fly.io Sprites](https://wildflower.computer/docs/reference/providers/sprites/)Live auth not verified | [No Documented Api](https://fly.io/sprites) | Estimate Only | Noneunknown | **Sprites bills actual consumption, so Wildflower's normalized wall-time estimate is intentionally low-confidence.**No public per-Sprite billing API is documented.Actual CPU and memory consumption cannot be reconstructed from lifecycle wall time. | | [Vercel Sandbox](https://wildflower.computer/docs/reference/providers/vercel/)Live auth not verified | [Account Usage Report](https://vercel.com/docs/cli/usage) | Unsupported Per Sandbox | Team Or Accountprovider reporting delay | **Wildflower cannot attribute the provider's account-level usage report to one sandbox without an authoritative mapping.**Vercel's documented usage reporting is team/account scoped rather than an authoritative per-sandbox API response.The current access token may not include usage permissions. | > **Modal is explicitly aggregate-only** > > Modal’s documented programmatic reports aggregate a workspace by hour or day, can omit final invoice adjustments, and are not exposed by the current bridge. They do not provide the authoritative per-sandbox amount required by Wildflower’s common contract, so Modal is marked`unsupported_per_sandbox`, not “supported.” > **Unavailable means unavailable** > > Smol currently has neither an integrated provider cost signal nor a comparable normalized CPU-and-memory rate, so Wildflower returns no estimate and the bounded canary refuses to guess a budget. Local billing fixtures exercise pagination, duplicate/conflicting records, missing scope, aggregate-only reports, lag, currency, and malformed amounts; they do not claim that any provider integration is live. ## Partial credentials degrade by operation Connecting a key does not prove it can create, execute, delete, or read billing data. The safe profile test makes no provider request and leaves a new profile `unverified`. Deep verification is explicit because it mutates provider state and may cost money. ```bash # Creates, executes in, and deletes a provider sandbox. # This can incur provider charges. wildflower provider verify e2b ``` - Verified create, get, exec, and delete with missing optional usage:`degraded`; working operations remain available. - A known failed operation is rejected locally with`provider_operation_unavailable`, a reason, and remediation. - Cleanup not proven: `unsafe`; future creates are blocked and the provider-native orphan ID and a reconciliation operation ID are returned. - A create with an unknown outcome and no routing ID is also`unsafe`; automated cleanup is impossible, so the reconciliation operation ID is the durable investigation handle. - Successful readiness evidence expires after 24 hours. Replacing or disconnecting a key while verification runs cannot be overwritten by the stale result. - A runtime authentication failure invalidates only the affected operation. Transport and temporary provider failures do not erase credential evidence. ## Run a bounded live canary first ```bash corepack pnpm providers:canary -- \ --confirm-live \ --max-estimated-cost-usd 0.10 \ --providers e2b,daytona ``` The canary requires fresh deep-verification evidence, a comparable normalized price, explicit live confirmation, and an estimated-cost ceiling before any network mutation. It uses stored profiles, attempts cleanup after every post-create failure, and writes evidence without credentials, sandbox IDs, provider-native IDs, or command output. The ceiling is an estimate, not a provider guarantee. ## Four latency boundaries, not one vague speed number | Clock | Boundary | Use it for | | --- | --- | --- | | Client wall | Complete HTTP request observed by the benchmark controller. | What an application experienced, including network and queueing. | | Wildflower app | `Server-Timing: app`, excluding provider wait. | Wildflower control-plane overhead. | | Provider adapter | `Server-Timing: provider` around the adapter call. | Provider API plus adapter-boundary time. | | Inside sandbox | `/proc/uptime` immediately around the workload, with a validated workload marker and declared 10 ms resolution. | Workload execution only; mismatched or unsupported evidence remains unavailable and never borrows another clock. | ## Run the neutral provider benchmark ```bash export WILDFLOWER_URL="https://wildflower.computer" export WILDFLOWER_API_KEY="" corepack pnpm providers:bench -- \ --providers e2b,daytona,modal \ --samples 100 \ --warmup-samples 3 \ --workloads noop,shell_cpu,filesystem_cache,filesystem_durable \ --region us-east \ --seed published-comparison-1 \ --publishable ``` Protocol 2 fixes noop, a portable shell loop named`shell_cpu` (not a hardware-normalized “single-core” score), cached filesystem work, and a separate `fsync` filesystem workload. Warm runs use a new sandbox per provider and workload, record three unmeasured warmups, and clean that workload before moving on. Provider order is seeded and interleaved; timeouts plus HTTP, workload, and cleanup failures remain in the artifact. Statistics fail closed when the sample count cannot support them: p50 requires 2 measurements, p95 20, p99 100, the p50 bootstrap interval 20, and the p95 interval 100. Publication mode also requires a named region, fresh readiness, a clean source equal to local `origin/main`, and a commit-shaped API build revision. The provider-default cohort is available. The normalized-resource cohort is deliberately unavailable until every provider can be assigned equivalent declared vCPU, memory, architecture, and image contents. No cross-workload composite score or overall winner is produced. - [Download the provider benchmark protocol](https://wildflower.computer/provider-benchmark-protocol.json) - [Download the result schema](https://wildflower.computer/schemas/provider-benchmark-result-v1.schema.json) - [Download provider observability coverage](https://wildflower.computer/provider-observability.json) - [Download provider-neutral billing fixtures](https://wildflower.computer/contracts/provider-billing-fixtures.json) - [Download the observability vocabulary](https://wildflower.computer/contracts/observability-vocabulary.json) - [Download the cost snapshot v2 schema](https://wildflower.computer/schemas/sandbox-cost-snapshot-v2.schema.json) ## Telemetry delivery is observable too Create, delete, and usage-read boundaries emit`wildflower.telemetry.sandbox-cost-snapshot.v2` under the canonical`wildflower.sandbox.cost_snapshot.captured` event name. Every event has a UUIDv7 ID and an immutable price-source basis, so equal-millisecond rows resolve to one complete deterministic snapshot instead of mixing fields. Public`/metrics` and`/healthz` expose only process-wide attempt, sink-rejection, and ClickHouse dropped-row counters. They contain no project, sandbox, provider, request, or credential dimensions. --- title: "Connect once. Keep secrets out of the lifecycle." description: "Connect, inspect, test, override, and remove project-scoped BYOK sandbox-provider profiles without embedding credentials in application code." canonical: "https://wildflower.computer/docs/provider-profiles/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Connect once. Keep secrets out of the lifecycle. A provider profile binds one provider credential and its non-secret connection context to the authenticated Wildflower project. Later lifecycle calls resolve that profile automatically. ## Connect a profile The generated TypeScript CLI reads the provider credential from an environment variable. It never accepts the secret as a command argument or prints it in the returned profile. ```bash export WILDFLOWER_URL="http://localhost:8080" export WILDFLOWER_API_KEY="" export E2B_API_KEY="" corepack pnpm build node sdks/typescript/dist/cli.js provider connect e2b node sdks/typescript/dist/cli.js provider test e2b node sdks/typescript/dist/cli.js provider verify e2b node sdks/typescript/dist/cli.js provider list ``` > **Safe test is intentionally narrow** > > `provider test` proves only that Wildflower can decrypt the stored profile and resolve its adapter. It makes no provider request. A newly connected profile remains `unverified` and reports provider authentication as`not_run`. > **Deep verification creates a billable resource** > > `provider verify` creates a provider sandbox, gets it, executes an exact command, and deletes it. It can incur provider charges. The operation matrix is persisted: missing optional usage data degrades the profile without disabling verified lifecycle operations, while unproven cleanup marks it unsafe and blocks later creates. ## Use the HTTP control-plane route Pipe JSON from `jq` so the provider secret does not enter shell history as a literal. The response contains redacted metadata, never the stored key. ```bash jq -n --arg apiKey "$E2B_API_KEY" '{apiKey: $apiKey}' | curl -fsS "$WILDFLOWER_URL/v1/provider-profiles/e2b" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @- ``` ## Provider-specific connection context | Provider | Create fields | Connection fields | | --- | --- | --- | | [AWS AgentCore](https://wildflower.computer/docs/reference/providers/agentcore/) | timeout | bridgeUrl | | [Blaxel](https://wildflower.computer/docs/reference/providers/blaxel/) | image, timeout | workspace | | [ASCII Box](https://wildflower.computer/docs/reference/providers/box/) | timeout | None | | [Cloudflare Sandbox](https://wildflower.computer/docs/reference/providers/cloudflare/) | None | bridgeUrl | | [E2B](https://wildflower.computer/docs/reference/providers/e2b/) | image, timeout | None | | [Novita Agent Sandbox](https://wildflower.computer/docs/reference/providers/novita/) | image, timeout | None | | [Daytona](https://wildflower.computer/docs/reference/providers/daytona/) | image, timeout | None | | [Modal](https://wildflower.computer/docs/reference/providers/modal/) | image, timeout | bridgeUrl | | [Runloop](https://wildflower.computer/docs/reference/providers/runloop/) | image, timeout | None | | [Smol Machines](https://wildflower.computer/docs/reference/providers/smol/) | image, timeout | None | | [Fly.io Sprites](https://wildflower.computer/docs/reference/providers/sprites/) | None | None | | [Vercel Sandbox](https://wildflower.computer/docs/reference/providers/vercel/) | image, timeout | teamId, projectId | ## Partial keys degrade by operation Wildflower does not reject a useful lifecycle key merely because it lacks separate account-billing scope. A deep check records`create`, `get`, `exec`,`delete`, and optional `usage` independently. Once a requested operation is known to be failed or unavailable, Wildflower rejects it locally with a provider-neutral reason and remediation instead of redispatching a failure every time. Successful deep-verification evidence expires after 24 hours. Reconnecting or disconnecting while a deep check is still running wins over that stale result. An ambiguous create or failed cleanup marks the profile`unsafe`, blocks future creates, and returns reconciliation details. During normal lifecycle use, authentication failure invalidates only the affected operation; temporary transport failures do not erase readiness evidence. See [provider cost, usage, and benchmark coverage](https://wildflower.computer/docs/provider-observability/) for every provider’s current billing-signal gap. ## Storage boundaries ### Static local mode Without `DATABASE_URL`, the deployment-wide Wildflower key identifies one in-memory project. Connected profiles disappear when the process restarts. ### PostgreSQL mode Project keys identify durable projects. Provider credentials are encrypted with the stable `WILDFLOWER_PROVIDER_PROFILE_KEY`; responses expose only non-secret metadata. ### Inline override A typed provider credential sent with one client remains ephemeral and overrides the connected profile for that request context. ### Disconnected profile Removing a profile prevents fresh processes from resolving it. Existing provider sandboxes are not migrated or deleted automatically. ## Disconnect ```bash node sdks/typescript/dist/cli.js provider disconnect e2b ``` --- title: "Current provider support." description: "Review 5 detailed Wildflower Computer provider guides and generated capability references for all 12 supported sandbox backends." canonical: "https://wildflower.computer/docs/providers/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Current provider support. Wildflower Computer supports 12 adapters. The generated capability directory covers every one; 5 direct providers also have evidence-backed behavior guides. Provider selection is explicit at creation and remains fixed for that sandbox. - [AWS AgentCore](https://wildflower.computer/docs/reference/providers/agentcore/) — agentcore - [Blaxel](https://wildflower.computer/docs/reference/providers/blaxel/) — blaxel - [ASCII Box](https://wildflower.computer/docs/reference/providers/box/) — box - [Cloudflare Sandbox](https://wildflower.computer/docs/reference/providers/cloudflare/) — cloudflare - [E2B](https://wildflower.computer/docs/reference/providers/e2b/) — e2b - [Novita Agent Sandbox](https://wildflower.computer/docs/reference/providers/novita/) — novita - [Daytona](https://wildflower.computer/docs/reference/providers/daytona/) — daytona - [Modal](https://wildflower.computer/docs/reference/providers/modal/) — modal - [Runloop](https://wildflower.computer/docs/reference/providers/runloop/) — runloop - [Smol Machines](https://wildflower.computer/docs/reference/providers/smol/) — smol - [Fly.io Sprites](https://wildflower.computer/docs/reference/providers/sprites/) — sprites - [Vercel Sandbox](https://wildflower.computer/docs/reference/providers/vercel/) — vercel ## Detailed behavior guides **Blaxel** Preview / contract-tested / `blaxel` Persistent Blaxel sandboxes addressed through an API key and workspace. ImageRuntime image supported LifetimeTimeout sent as runtime TTL OutputSeparate stdout and stderr A workspace is required on every lifecycle request. - [Detailed Blaxel support](https://wildflower.computer/providers/blaxel/) **E2B** Preview / contract-tested / `e2b` Persistent sandboxes created from an E2B template. ImageTemplate ID supported LifetimeTimeout in seconds OutputSeparate stdout and stderr Defaults to the base template and a 300-second lifetime when omitted. - [Detailed E2B support](https://wildflower.computer/providers/e2b/) **Daytona** Launch tier / live-proven / `daytona` Persistent sandboxes created from a container image. ImageContainer image supported LifetimeRounded up to TTL minutes OutputCombined output in stdout Wildflower Computer generates a one-line Dockerfile from the image value. - [Detailed Daytona support](https://wildflower.computer/providers/daytona/) **Runloop** Preview / contract-tested / `runloop` Persistent Runloop Devboxes created from an optional Blueprint. ImageBlueprint name supported LifetimeMaximum 172800 seconds OutputSeparate stdout and stderr The default starter image is used when a Blueprint name is omitted. - [Detailed Runloop support](https://wildflower.computer/providers/runloop/) **Fly.io Sprites** Launch tier / live-proven / `sprites` Persistent Sprites with a fixed environment and automatic sleep. ImageFixed environment LifetimeNo timeout option OutputSeparate stdout and stderr A cold Sprite may report stopped and wakes on its first command. - [Detailed Fly.io Sprites support](https://wildflower.computer/providers/sprites/) ## Blaxel behavior - The image is a Blaxel runtime image and defaults to blaxel/base-image:latest. - An optional timeout in seconds is sent to Blaxel as the runtime TTL. - The adapter returns the provider process stdout, stderr, and exit code through the shared execution result. - The provider credential is a blaxel api key. ## E2B behavior - The image field is interpreted as an E2B template ID. It defaults to base when omitted. - The timeout is a sandbox lifetime in seconds and defaults to 300 when omitted. - The adapter preserves separate stdout and stderr streams and returns the command exit code. - The provider credential is a e2b api key. ## Daytona behavior - The image field is a container image. The adapter generates a one-line Dockerfile using that image. - The API accepts seconds and the adapter rounds them up to whole Daytona TTL minutes. - Daytona returns combined command output. The adapter places it in stdout and returns an empty stderr. - The provider credential is a daytona api key. ## Runloop behavior - The image field is interpreted as a Runloop Blueprint name. The default starter image is used when omitted. - The timeout becomes the Devbox maximum lifetime and cannot exceed 172800 seconds. - The adapter waits for command completion and returns stdout, stderr, and the exit status. Truncated output is reported as an error. - The provider credential is a runloop api key. ## Fly.io Sprites behavior - Sprites uses a fixed environment. The adapter rejects image rather than silently ignoring it. - Sprites automatically sleeps and persists until deletion. The adapter rejects timeout. - The adapter preserves separate stdout and stderr frames and returns the command exit code. - The provider credential is a fly.io sprites api token. > **Support does not mean failover** > > The API and adapter contract tests cover these providers. Wildflower Computer does not automatically retry an operation on a different provider or migrate sandbox state. > **Live proof is narrower than adapter coverage** > > Daytona and Fly.io Sprites are the initial launch tier with a current full private-staging lifecycle smoke. The remaining adapters are preview: their lifecycle boundaries are contract-tested without current live provider credentials. > **Lifecycle support is not billing-data support** > > Every provider currently has a normalized published-price estimate, but none is presented as provider-reported per-sandbox cost. Some providers require distinct billing scope; others expose dashboard or aggregate-only data. Review the [complete provider observability matrix](https://wildflower.computer/docs/provider-observability/) before building usage analytics or customer-facing cost UI. For tested upstream contracts and machine-readable evidence, use the [provider compatibility matrix](https://wildflower.computer/compatibility/) and [OpenAPI downloads](https://wildflower.computer/openapi/). --- title: "Accept an organization invitation." description: "Browser operation: Accept an organization invitation. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/accept-account-invitation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Accept an organization invitation. **POST** `/v1/invitations/{invitationId}/accept` Accept an organization invitation - **Operation ID:** `acceptAccountInvitation` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `invitationId` is a required path parameter. The JSON request body uses the [`CompleteAccountInvitationInput` model](https://wildflower.computer/openapi.json#/components/schemas/CompleteAccountInvitationInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/invitations/${WILDFLOWER_INVITATION_ID}/accept" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Accept the release for an organization." description: "Browser operation: Accept the release for an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/accept-account-legal-agreement/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Accept the release for an organization. **POST** `/v1/accounts/{accountId}/legal/agreements` Allows an active organization owner who completed their user acceptance to attest authority and bind the organization to the current release. - **Operation ID:** `acceptAccountLegalAgreement` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. The JSON request body uses the [`AccountLegalAgreementInput` model](https://wildflower.computer/openapi.json#/components/schemas/AccountLegalAgreementInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/legal/agreements" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Accept current legal documents." description: "Browser operation: Accept current legal documents. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/accept-legal-documents/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Accept current legal documents. **POST** `/v1/legal/acceptances` Records the exact release, document versions, content hashes, browser session, request, and UI revision. A stale release fails closed. - **Operation ID:** `acceptLegalDocuments` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. The JSON request body uses the [`LegalAcceptanceInput` model](https://wildflower.computer/openapi.json#/components/schemas/LegalAcceptanceInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/legal/acceptances" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Add a project member." description: "Browser operation: Add a project member. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/add-project-member/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Add a project member. **POST** `/v1/projects/{projectId}/members` Add a project member - **Operation ID:** `addProjectMember` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. The JSON request body uses the [`AddProjectMemberInput` model](https://wildflower.computer/openapi.json#/components/schemas/AddProjectMemberInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/members" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Invite a person to an organization." description: "Browser operation: Invite a person to an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/create-account-invitation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Invite a person to an organization. **POST** `/v1/accounts/{accountId}/invitations` Invite a person to an organization - **Operation ID:** `createAccountInvitation` - **Success:** **202** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. The JSON request body uses the [`CreateAccountInvitationInput` model](https://wildflower.computer/openapi.json#/components/schemas/CreateAccountInvitationInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/invitations" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Create a project in an account." description: "Browser operation: Create a project in an account. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/create-account-project/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Create a project in an account. **POST** `/v1/accounts/{accountId}/projects` Create a project in an account - **Operation ID:** `createAccountProject` - **Success:** **201** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. The JSON request body uses the [`CreateProjectInput` model](https://wildflower.computer/openapi.json#/components/schemas/CreateProjectInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/projects" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Create an organization." description: "Browser operation: Create an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/create-organization/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Create an organization. **POST** `/v1/accounts` Create an organization - **Operation ID:** `createOrganization` - **Success:** **201** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. The JSON request body uses the [`CreateOrganizationInput` model](https://wildflower.computer/openapi.json#/components/schemas/CreateOrganizationInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Create a project API key." description: "Browser operation: Create a project API key. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/create-project-api-key/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Create a project API key. **POST** `/v1/projects/{projectId}/api-keys` Creates a project-scoped API key and returns its plaintext exactly once. Only its prefix and SHA-256 digest are persisted. - **Operation ID:** `createProjectApiKey` - **Success:** **201** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. The JSON request body uses the [`CreateProjectApiKeyInput` model](https://wildflower.computer/openapi.json#/components/schemas/CreateProjectApiKeyInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/api-keys" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Decline an organization invitation." description: "Browser operation: Decline an organization invitation. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/decline-account-invitation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Decline an organization invitation. **POST** `/v1/invitations/{invitationId}/decline` Decline an organization invitation - **Operation ID:** `declineAccountInvitation` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `invitationId` is a required path parameter. The JSON request body uses the [`CompleteAccountInvitationInput` model](https://wildflower.computer/openapi.json#/components/schemas/CompleteAccountInvitationInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/invitations/${WILDFLOWER_INVITATION_ID}/decline" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Delete an organization." description: "Browser operation: Delete an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/delete-organization/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Delete an organization. **DELETE** `/v1/accounts/{accountId}` Deletes an organization after all of its sandboxes have been deleted. The authenticated user must be an owner and must confirm the exact organization name or slug. - **Operation ID:** `deleteOrganization` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. The JSON request body uses the [`DeleteOrganizationInput` model](https://wildflower.computer/openapi.json#/components/schemas/DeleteOrganizationInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Delete the authenticated user." description: "Browser operation: Delete the authenticated user. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/delete-user/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Delete the authenticated user. **DELETE** `/v1/me` Deletes the personal account after its sandboxes are cleaned up. Organization projects remain intact, and deletion is rejected while the user is an organization's sole owner. - **Operation ID:** `deleteUser` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. The JSON request body uses the [`DeleteAccountInput` model](https://wildflower.computer/openapi.json#/components/schemas/DeleteAccountInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/me" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Get organization agreement state." description: "Browser operation: Get organization agreement state. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/get-account-legal-state/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Get organization agreement state. **GET** `/v1/accounts/{accountId}/legal` Get organization agreement state - **Operation ID:** `getAccountLegalState` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/legal" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Get an accessible account." description: "Browser operation: Get an accessible account. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/get-account/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Get an accessible account. **GET** `/v1/accounts/{accountId}` Get an accessible account - **Operation ID:** `getAccount` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Get the authenticated browser user." description: "Browser operation: Get the authenticated browser user. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/get-browser-user/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Get the authenticated browser user. **GET** `/v1/me` Returns the user and current legal state associated with the opaque browser session and advances its idle expiration without extending its absolute lifetime. - **Operation ID:** `getBrowserUser` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/me" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "The browser control plane, without guesswork." description: "Generated reference for 36 Wildflower browser-session control-plane operations, including account, project, invitation, legal, and API-key management." canonical: "https://wildflower.computer/docs/reference/control-plane/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # The browser control plane, without guesswork. These routes power the Wildflower console. They use the opaque `wildflower_session` cookie instead of project API keys and are intentionally excluded from the generated SDK surface. **36**operations **11**session reads **25**CSRF-protected mutations ## Authentication boundary Browser sessions are same-origin and cookie-backed. Mutations also require the `X-Wildflower-Csrf` header. Project API keys and generated SDK clients must use the public sandbox API instead. ## Operations - [Rotate the browser session](https://wildflower.computer/docs/reference/control-plane/refresh-browser-session/) — POST — `/v1/auth/session/refresh` - [Log out the browser session](https://wildflower.computer/docs/reference/control-plane/logout-browser-session/) — POST — `/v1/auth/logout` - [Get the authenticated browser user](https://wildflower.computer/docs/reference/control-plane/get-browser-user/) — GET — `/v1/me` - [Delete the authenticated user](https://wildflower.computer/docs/reference/control-plane/delete-user/) — DELETE — `/v1/me` - [List accessible accounts](https://wildflower.computer/docs/reference/control-plane/list-accounts/) — GET — `/v1/accounts` - [Create an organization](https://wildflower.computer/docs/reference/control-plane/create-organization/) — POST — `/v1/accounts` - [Get an accessible account](https://wildflower.computer/docs/reference/control-plane/get-account/) — GET — `/v1/accounts/{accountId}` - [Update an account](https://wildflower.computer/docs/reference/control-plane/update-account/) — PATCH — `/v1/accounts/{accountId}` - [Delete an organization](https://wildflower.computer/docs/reference/control-plane/delete-organization/) — DELETE — `/v1/accounts/{accountId}` - [List account members](https://wildflower.computer/docs/reference/control-plane/list-account-members/) — GET — `/v1/accounts/{accountId}/members` - [Change an account member role](https://wildflower.computer/docs/reference/control-plane/update-account-member/) — PATCH — `/v1/accounts/{accountId}/members/{userId}` - [Remove an account member](https://wildflower.computer/docs/reference/control-plane/remove-account-member/) — DELETE — `/v1/accounts/{accountId}/members/{userId}` - [Leave an organization](https://wildflower.computer/docs/reference/control-plane/leave-account/) — POST — `/v1/accounts/{accountId}/leave` - [List accessible projects in an account](https://wildflower.computer/docs/reference/control-plane/list-account-projects/) — GET — `/v1/accounts/{accountId}/projects` - [Create a project in an account](https://wildflower.computer/docs/reference/control-plane/create-account-project/) — POST — `/v1/accounts/{accountId}/projects` - [List pending organization invitations](https://wildflower.computer/docs/reference/control-plane/list-account-invitations/) — GET — `/v1/accounts/{accountId}/invitations` - [Invite a person to an organization](https://wildflower.computer/docs/reference/control-plane/create-account-invitation/) — POST — `/v1/accounts/{accountId}/invitations` - [Revoke a pending organization invitation](https://wildflower.computer/docs/reference/control-plane/revoke-account-invitation/) — DELETE — `/v1/accounts/{accountId}/invitations/{invitationId}` - [Rotate and resend a pending organization invitation](https://wildflower.computer/docs/reference/control-plane/resend-account-invitation/) — POST — `/v1/accounts/{accountId}/invitations/{invitationId}/resend` - [List invitations matching the signed-in user's verified identities](https://wildflower.computer/docs/reference/control-plane/list-user-invitations/) — GET — `/v1/invitations` - [Accept an organization invitation](https://wildflower.computer/docs/reference/control-plane/accept-account-invitation/) — POST — `/v1/invitations/{invitationId}/accept` - [Decline an organization invitation](https://wildflower.computer/docs/reference/control-plane/decline-account-invitation/) — POST — `/v1/invitations/{invitationId}/decline` - [List owned projects](https://wildflower.computer/docs/reference/control-plane/list-projects/) — GET — `/v1/projects` - [Transfer a personal project to an organization](https://wildflower.computer/docs/reference/control-plane/transfer-project/) — POST — `/v1/projects/{projectId}/transfer` - [List effective project members](https://wildflower.computer/docs/reference/control-plane/list-project-members/) — GET — `/v1/projects/{projectId}/members` - [Add a project member](https://wildflower.computer/docs/reference/control-plane/add-project-member/) — POST — `/v1/projects/{projectId}/members` - [Change a project member role](https://wildflower.computer/docs/reference/control-plane/update-project-member/) — PATCH — `/v1/projects/{projectId}/members/{userId}` - [Remove an explicit project member](https://wildflower.computer/docs/reference/control-plane/remove-project-member/) — DELETE — `/v1/projects/{projectId}/members/{userId}` - [List project API keys](https://wildflower.computer/docs/reference/control-plane/list-project-api-keys/) — GET — `/v1/projects/{projectId}/api-keys` - [Create a project API key](https://wildflower.computer/docs/reference/control-plane/create-project-api-key/) — POST — `/v1/projects/{projectId}/api-keys` - [Revoke a project API key](https://wildflower.computer/docs/reference/control-plane/revoke-project-api-key/) — DELETE — `/v1/projects/{projectId}/api-keys/{keyId}` - [Accept current legal documents](https://wildflower.computer/docs/reference/control-plane/accept-legal-documents/) — POST — `/v1/legal/acceptances` - [Mark a legal notice as seen](https://wildflower.computer/docs/reference/control-plane/mark-legal-notification-seen/) — POST — `/v1/legal/notifications/{notificationId}/seen` - [Record or withdraw optional consent](https://wildflower.computer/docs/reference/control-plane/record-legal-consent/) — POST — `/v1/legal/consents` - [Get organization agreement state](https://wildflower.computer/docs/reference/control-plane/get-account-legal-state/) — GET — `/v1/accounts/{accountId}/legal` - [Accept the release for an organization](https://wildflower.computer/docs/reference/control-plane/accept-account-legal-agreement/) — POST — `/v1/accounts/{accountId}/legal/agreements` --- title: "Leave an organization." description: "Browser operation: Leave an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/leave-account/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Leave an organization. **POST** `/v1/accounts/{accountId}/leave` Leave an organization - **Operation ID:** `leaveAccount` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/leave" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List pending organization invitations." description: "Browser operation: List pending organization invitations. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-account-invitations/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List pending organization invitations. **GET** `/v1/accounts/{accountId}/invitations` List pending organization invitations - **Operation ID:** `listAccountInvitations` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/invitations" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List account members." description: "Browser operation: List account members. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-account-members/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List account members. **GET** `/v1/accounts/{accountId}/members` List account members - **Operation ID:** `listAccountMembers` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/members" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List accessible projects in an account." description: "Browser operation: List accessible projects in an account. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-account-projects/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List accessible projects in an account. **GET** `/v1/accounts/{accountId}/projects` List accessible projects in an account - **Operation ID:** `listAccountProjects` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `accountId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/projects" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List accessible accounts." description: "Browser operation: List accessible accounts. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-accounts/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List accessible accounts. **GET** `/v1/accounts` List accessible accounts - **Operation ID:** `listAccounts` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/accounts" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List project API keys." description: "Browser operation: List project API keys. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-project-api-keys/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List project API keys. **GET** `/v1/projects/{projectId}/api-keys` Returns non-secret API-key metadata. Plaintext keys are never returned by this operation. - **Operation ID:** `listProjectApiKeys` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `projectId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/api-keys" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List effective project members." description: "Browser operation: List effective project members. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-project-members/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List effective project members. **GET** `/v1/projects/{projectId}/members` List effective project members - **Operation ID:** `listProjectMembers` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract - `projectId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/members" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List owned projects." description: "Browser operation: List owned projects. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-projects/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List owned projects. **GET** `/v1/projects` Returns the projects owned by the authenticated browser user. - **Operation ID:** `listProjects` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/projects" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "List invitations matching the signed-in user's verified identities." description: "Browser operation: List invitations matching the signed-in user's verified identities. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/list-user-invitations/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List invitations matching the signed-in user's verified identities. **GET** `/v1/invitations` List invitations matching the signed-in user's verified identities - **Operation ID:** `listUserInvitations` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **Not required** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request GET \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ "https://wildflower.computer/v1/invitations" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Log out the browser session." description: "Browser operation: Log out the browser session. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/logout-browser-session/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Log out the browser session. **POST** `/v1/auth/logout` Revokes the current browser session after double-submit CSRF validation and clears its cookies. - **Operation ID:** `logoutBrowserSession` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/auth/logout" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Mark a legal notice as seen." description: "Browser operation: Mark a legal notice as seen. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/mark-legal-notification-seen/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Mark a legal notice as seen. **POST** `/v1/legal/notifications/{notificationId}/seen` Mark a legal notice as seen - **Operation ID:** `markLegalNotificationSeen` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `notificationId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/legal/notifications/${WILDFLOWER_NOTIFICATION_ID}/seen" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Record or withdraw optional consent." description: "Browser operation: Record or withdraw optional consent. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/record-legal-consent/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Record or withdraw optional consent. **POST** `/v1/legal/consents` Appends an analytics or marketing consent event. Consent is separate from the service agreement and can be withdrawn. - **Operation ID:** `recordLegalConsent` - **Success:** **201** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. The JSON request body uses the [`LegalConsentInput` model](https://wildflower.computer/openapi.json#/components/schemas/LegalConsentInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/legal/consents" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Rotate the browser session." description: "Browser operation: Rotate the browser session. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/refresh-browser-session/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Rotate the browser session. **POST** `/v1/auth/session/refresh` Atomically invalidates the current opaque session token and CSRF token and issues replacements without extending the absolute session lifetime. - **Operation ID:** `refreshBrowserSession` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract This operation has no path parameters. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/auth/session/refresh" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Remove an account member." description: "Browser operation: Remove an account member. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/remove-account-member/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Remove an account member. **DELETE** `/v1/accounts/{accountId}/members/{userId}` Remove an account member - **Operation ID:** `removeAccountMember` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. - `userId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/members/${WILDFLOWER_USER_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Remove an explicit project member." description: "Browser operation: Remove an explicit project member. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/remove-project-member/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Remove an explicit project member. **DELETE** `/v1/projects/{projectId}/members/{userId}` Remove an explicit project member - **Operation ID:** `removeProjectMember` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. - `userId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/members/${WILDFLOWER_USER_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Rotate and resend a pending organization invitation." description: "Browser operation: Rotate and resend a pending organization invitation. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/resend-account-invitation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Rotate and resend a pending organization invitation. **POST** `/v1/accounts/{accountId}/invitations/{invitationId}/resend` Rotate and resend a pending organization invitation - **Operation ID:** `resendAccountInvitation` - **Success:** **202** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. - `invitationId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/invitations/${WILDFLOWER_INVITATION_ID}/resend" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Revoke a pending organization invitation." description: "Browser operation: Revoke a pending organization invitation. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/revoke-account-invitation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Revoke a pending organization invitation. **DELETE** `/v1/accounts/{accountId}/invitations/{invitationId}` Revoke a pending organization invitation - **Operation ID:** `revokeAccountInvitation` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. - `invitationId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/invitations/${WILDFLOWER_INVITATION_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Revoke a project API key." description: "Browser operation: Revoke a project API key. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/revoke-project-api-key/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Revoke a project API key. **DELETE** `/v1/projects/{projectId}/api-keys/{keyId}` Permanently revokes the selected API key. A missing key and a key owned by another user fail identically. - **Operation ID:** `revokeProjectApiKey` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. - `keyId` is a required path parameter. This operation has no JSON request body. ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request DELETE \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/api-keys/${WILDFLOWER_KEY_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Transfer a personal project to an organization." description: "Browser operation: Transfer a personal project to an organization. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/transfer-project/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Transfer a personal project to an organization. **POST** `/v1/projects/{projectId}/transfer` Moves the stable project ownership root from the caller's personal account to an organization where they are an owner or admin. Project API keys, provider profiles, sandboxes, and idempotency records remain attached to the unchanged project ID. - **Operation ID:** `transferProject` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. The JSON request body uses the [`TransferProjectInput` model](https://wildflower.computer/openapi.json#/components/schemas/TransferProjectInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request POST \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/transfer" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Change an account member role." description: "Browser operation: Change an account member role. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/update-account-member/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Change an account member role. **PATCH** `/v1/accounts/{accountId}/members/{userId}` Change an account member role - **Operation ID:** `updateAccountMember` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. - `userId` is a required path parameter. The JSON request body uses the [`UpdateAccountMemberInput` model](https://wildflower.computer/openapi.json#/components/schemas/UpdateAccountMemberInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request PATCH \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}/members/${WILDFLOWER_USER_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Update an account." description: "Browser operation: Update an account. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/update-account/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Update an account. **PATCH** `/v1/accounts/{accountId}` Update an account - **Operation ID:** `updateAccount` - **Success:** **200** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `accountId` is a required path parameter. The JSON request body uses the [`UpdateAccountInput` model](https://wildflower.computer/openapi.json#/components/schemas/UpdateAccountInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request PATCH \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/accounts/${WILDFLOWER_ACCOUNT_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Change a project member role." description: "Browser operation: Change a project member role. Covers session auth, CSRF, request models, parameters, and success statuses." canonical: "https://wildflower.computer/docs/reference/control-plane/update-project-member/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Change a project member role. **PATCH** `/v1/projects/{projectId}/members/{userId}` Change a project member role - **Operation ID:** `updateProjectMember` - **Success:** **204** - **Authentication:** **Browser session** - **CSRF header:** **X-Wildflower-Csrf** ## Request contract - `projectId` is a required path parameter. - `userId` is a required path parameter. The JSON request body uses the [`UpdateProjectMemberInput` model](https://wildflower.computer/openapi.json#/components/schemas/UpdateProjectMemberInput). ## Same-origin request example This operator-oriented example makes the cookie and CSRF boundaries explicit. Use an isolated browser test session, keep both values out of shell history, and replace generated path variables before execution. ```bash curl --request PATCH \ --cookie "wildflower_session=${WILDFLOWER_SESSION}" \ --header "X-Wildflower-Csrf: ${WILDFLOWER_CSRF_TOKEN}" \ --header "Content-Type: application/json" \ --data @request.json \ "https://wildflower.computer/v1/projects/${WILDFLOWER_PROJECT_ID}/members/${WILDFLOWER_USER_ID}" ``` ## SDK boundary This operation powers the account console and is not emitted in the TypeScript, Python, Rust, Go, or Zig project-key SDKs. Use the generated public API reference for sandbox automation. --- title: "Create a persistent running sandbox." description: "API reference for POST /v1/sandboxes: Create a persistent running sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/create-sandbox/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Create a persistent running sandbox. **POST** `/v1/sandboxes` Creates one provider-backed sandbox and registers its opaque project-scoped ID. Provider access comes from a connected profile or an inline header override, and the selected provider remains fixed for this sandbox. - **Operation ID:** `createSandbox` - **Success:** **200 / 201** - **Authentication:** **Bearer key** ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | | `Idempotency-Key` | string | Optional | Caller-generated logical operation key. Reusing it with the same request replays a completed create; conflicting, concurrent, or indeterminate attempts fail closed. | | `X-Provider-Bridge-Url` | string | Optional | Optional inline customer-owned bridge URL. Required with an inline Cloudflare, Modal, or AgentCore credential and omitted when using a connected profile. | | `X-Provider-Team-Id` | string | Optional | Optional inline Vercel team identifier. Required with an inline Vercel credential. | | `X-Provider-Project-Id` | string | Optional | Optional inline Vercel project identifier. Required with an inline Vercel credential. | ## Request and response - **Request body:** [CreateSandboxRequest](https://wildflower.computer/docs/reference/models/create-sandbox-request/) - **Response:** [Sandbox](https://wildflower.computer/docs/reference/models/sandbox/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Idempotency-Key: docs-create-example" \ -H "Content-Type: application/json" \ --data '{"provider":"e2b","image":"base","timeout":300}' ``` Response / 201 ```json { "id": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "provider": "e2b", "status": "creating", "metadata": { "nativeProviderId": "native-1" } } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.create({ provider: "e2b", image: "base", timeout: 300, }); console.log(sandbox.id, sandbox.status); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) sandbox = client.sandboxes.create( E2bCreateSandboxInput(image="base", timeout=300) ) print(sandbox.id, sandbox.status) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let sandbox = client.sandboxes().create(CreateSandboxInput::E2b { api_key: None, image: Some("base".to_owned()), timeout: Some(300), }).await?; println!("{} {:?}", sandbox.id, sandbox.status); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } image := "base" timeout := uint32(300) sandbox, err := client.Sandboxes.Create(ctx, wildflower.E2BCreateSandboxInput{ Image: &image, Timeout: &timeout, }) if err != nil { return err } fmt.Println(sandbox.ID, sandbox.Status) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var sandbox = try client.create(.{ .e2b = .{ .api_key = null, .image = "base", .timeout = 300, } }); defer sandbox.deinit(); std.debug.print("{s}\n", .{sandbox.value.id}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `create` - [Python](https://wildflower.computer/sdk/python/): `create` - [Rust](https://wildflower.computer/sdk/rust/): `create` - [Go](https://wildflower.computer/sdk/go/): `Create` - [Zig](https://wildflower.computer/sdk/zig/): `create` --- title: "Delete a sandbox." description: "API reference for DELETE /v1/sandboxes/{id}: Delete a sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/delete-sandbox/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Delete a sandbox. **DELETE** `/v1/sandboxes/{id}` Permanently deletes one project-owned provider sandbox and records a Wildflower registry tombstone for later project-scoped listing. - **Operation ID:** `deleteSandbox` - **Success:** **200** - **Authentication:** **Bearer key** ## Path parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `id` | string | Required | Opaque, project-scoped Wildflower sandbox ID returned by create. The provider namespace is visible, but the random payload does not encode the provider-native ID. | ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | | `X-Provider-Bridge-Url` | string | Optional | Optional inline customer-owned bridge URL. Required with an inline Cloudflare, Modal, or AgentCore credential and omitted when using a connected profile. | | `X-Provider-Team-Id` | string | Optional | Optional inline Vercel team identifier. Required with an inline Vercel credential. | | `X-Provider-Project-Id` | string | Optional | Optional inline Vercel project identifier. Required with an inline Vercel credential. | ## Request and response - **Request body:** **None** - **Response:** [DeletedSandbox](https://wildflower.computer/docs/reference/models/deleted-sandbox/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request DELETE \ "$WILDFLOWER_URL/v1/sandboxes/wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" ``` Response / 200 ```json { "id": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "provider": "e2b", "status": "deleted", "metadata": { "nativeProviderId": "native-1" } } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); const deleted = await handle.delete(); console.log(deleted.status); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") deleted = handle.delete() print(deleted.status) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let handle = client.sandboxes().attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")?; let deleted = handle.delete().await?; println!("{:?}", deleted.status); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } handle, err := client.Sandboxes.Attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") if err != nil { return err } deleted, err := handle.Delete(ctx) if err != nil { return err } fmt.Println(deleted.Status) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var handle = client.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); var deleted = try handle.delete(); defer deleted.deinit(); std.debug.print("{s}\n", .{@tagName(deleted.value.status)}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `delete` - [Python](https://wildflower.computer/sdk/python/): `delete` - [Rust](https://wildflower.computer/sdk/rust/): `delete` - [Go](https://wildflower.computer/sdk/go/): `Delete` - [Zig](https://wildflower.computer/sdk/zig/): `delete` --- title: "Get a sandbox." description: "API reference for GET /v1/sandboxes/{id}: Get a sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/get-sandbox/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Get a sandbox. **GET** `/v1/sandboxes/{id}` Fetches the current provider state for one project-owned sandbox and returns it through the normalized Wildflower lifecycle model. - **Operation ID:** `getSandbox` - **Success:** **200** - **Authentication:** **Bearer key** ## Path parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `id` | string | Required | Opaque, project-scoped Wildflower sandbox ID returned by create. The provider namespace is visible, but the random payload does not encode the provider-native ID. | ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | | `X-Provider-Bridge-Url` | string | Optional | Optional inline customer-owned bridge URL. Required with an inline Cloudflare, Modal, or AgentCore credential and omitted when using a connected profile. | | `X-Provider-Team-Id` | string | Optional | Optional inline Vercel team identifier. Required with an inline Vercel credential. | | `X-Provider-Project-Id` | string | Optional | Optional inline Vercel project identifier. Required with an inline Vercel credential. | ## Request and response - **Request body:** **None** - **Response:** [Sandbox](https://wildflower.computer/docs/reference/models/sandbox/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request GET \ "$WILDFLOWER_URL/v1/sandboxes/wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" ``` Response / 200 ```json { "id": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "provider": "e2b", "status": "running", "metadata": { "nativeProviderId": "native-1" } } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.get("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); console.log(sandbox.status, sandbox.statusObservedAt); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) sandbox = client.sandboxes.get("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") print(sandbox.status, sandbox.status_observed_at) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let sandbox = client.sandboxes().get("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA").await?; println!("{:?} {:?}", sandbox.status, sandbox.status_observed_at); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } sandbox, err := client.Sandboxes.Get(ctx, "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") if err != nil { return err } fmt.Println(sandbox.Status, sandbox.StatusObservedAt) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var sandbox = try client.get("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); defer sandbox.deinit(); std.debug.print("{s}\n", .{@tagName(sandbox.value.status)}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `get` - [Python](https://wildflower.computer/sdk/python/): `get` - [Rust](https://wildflower.computer/sdk/rust/): `get` - [Go](https://wildflower.computer/sdk/go/): `Get` - [Zig](https://wildflower.computer/sdk/zig/): `get` --- title: "The contract, in full bloom." description: "Generated Wildflower Computer API reference for 8 public SDK operations, 36 browser operations, 51 models, and 12 providers." canonical: "https://wildflower.computer/docs/reference/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # The contract, in full bloom. Browse every public operation, model, and provider capability generated from the same contract as the TypeScript, Python, Rust, Go, and Zig SDKs. The pages are static, content-addressed, and tied to OpenAPI 0.8.0. - **operations:** **8** - **models:** **51** - **error codes:** **34** - **SDK targets:** **5** - **providers:** **12** ## Browser control plane The account console uses 36 separately generated, cookie-authenticated operations. They are documented without presenting them as public project-key SDK methods. [Browse the generated browser control-plane reference →](https://wildflower.computer/docs/reference/control-plane/) ## Operations Resource ### sandboxes - [List project sandboxes](https://wildflower.computer/docs/reference/list-sandboxes/) — GET — `/v1/sandboxes` - [Create a persistent running sandbox](https://wildflower.computer/docs/reference/create-sandbox/) — POST — `/v1/sandboxes` - [Get a sandbox](https://wildflower.computer/docs/reference/get-sandbox/) — GET — `/v1/sandboxes/{id}` - [Run a command in an existing sandbox](https://wildflower.computer/docs/reference/run-sandbox-command/) — POST — `/v1/sandboxes/{id}/exec` - [Read a file from an existing sandbox](https://wildflower.computer/docs/reference/read-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/read` - [Write a file in an existing sandbox](https://wildflower.computer/docs/reference/write-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/write` - [Delete a sandbox](https://wildflower.computer/docs/reference/delete-sandbox/) — DELETE — `/v1/sandboxes/{id}` Resource ### providers - [List provider capabilities](https://wildflower.computer/docs/reference/list-providers/) — GET — `/v1/providers` ## Models Public request and response models preserve requiredness, nullability, enums, discriminated unions, and field descriptions from the generator IR. - [Provider](https://wildflower.computer/docs/reference/models/provider/) — enum — Stable provider identifier used for creation, routing, capability discovery, and errors. - [ImageMode](https://wildflower.computer/docs/reference/models/image-mode/) — enum — How a provider selects or fixes the sandbox runtime image. - [TimeoutMode](https://wildflower.computer/docs/reference/models/timeout-mode/) — enum — Whether sandbox lifetime is configured in seconds or managed entirely by the provider. - [OutputStreams](https://wildflower.computer/docs/reference/models/output-streams/) — enum — Whether the provider preserves stdout and stderr separately or returns combined command output. - [ProviderPricingProfile](https://wildflower.computer/docs/reference/models/provider-pricing-profile/) — object — Versioned workload used to compare published provider prices without implying an invoice quote. - [ProviderPricing](https://wildflower.computer/docs/reference/models/provider-pricing/) — object — Official provider pricing evidence and, when published rates permit it, a normalized catalog comparison. - [ProviderCapabilities](https://wildflower.computer/docs/reference/models/provider-capabilities/) — object — Discovery entry with identity, official pricing evidence, and runtime behavior for one configured sandbox provider. - [ProviderCatalog](https://wildflower.computer/docs/reference/models/provider-catalog/) — object — Identity, pricing evidence, and capability catalog for every provider configured in this Wildflower build. - [ProviderProfileConnection](https://wildflower.computer/docs/reference/models/provider-profile-connection/) — object — Non-secret provider-specific routing context stored with or supplied alongside a provider credential. - [ProviderProfileInput](https://wildflower.computer/docs/reference/models/provider-profile-input/) — object — Credential and optional non-secret connection context used to connect one project-scoped provider profile. - [ProviderProfilePersistence](https://wildflower.computer/docs/reference/models/provider-profile-persistence/) — enum — Storage boundary currently protecting a connected provider profile. - [ProviderOperation](https://wildflower.computer/docs/reference/models/provider-operation/) — enum — Provider operation whose credential entitlement or evidence was evaluated. - [ProviderOperationStatus](https://wildflower.computer/docs/reference/models/provider-operation-status/) — enum — Current evidence state for one provider operation. - [ProviderProfileStatus](https://wildflower.computer/docs/reference/models/provider-profile-status/) — enum — Overall provider profile readiness derived from the required operation matrix. - [ProviderTestMode](https://wildflower.computer/docs/reference/models/provider-test-mode/) — enum — Whether the result came from a non-mutating safe check or a provider-mutating deep verification. - [ProviderOperationReadiness](https://wildflower.computer/docs/reference/models/provider-operation-readiness/) — object — Evidence, failure reason, and remediation for one provider operation. - [ProviderProfileReadiness](https://wildflower.computer/docs/reference/models/provider-profile-readiness/) — object — Persisted operation-level readiness for a connected provider profile. - [ProviderProfile](https://wildflower.computer/docs/reference/models/provider-profile/) — object — Redacted metadata for a connected project-scoped provider profile. - [ProviderProfileCatalog](https://wildflower.computer/docs/reference/models/provider-profile-catalog/) — object — Redacted project-scoped provider profiles visible to the authenticated project. - [ProviderProfileTest](https://wildflower.computer/docs/reference/models/provider-profile-test/) — object — Safe or deep provider profile result with per-operation evidence and cleanup state. - [DeepProviderProfileTestInput](https://wildflower.computer/docs/reference/models/deep-provider-profile-test-input/) — object — Explicit acknowledgement required before a provider-mutating deep verification. - [SandboxStatus](https://wildflower.computer/docs/reference/models/sandbox-status/) — enum — Provider-neutral sandbox lifecycle state observed by Wildflower Computer. - [CreateSandboxRequest](https://wildflower.computer/docs/reference/models/create-sandbox-request/) — union — Provider-discriminated input for creating one persistent sandbox. - [AgentcoreCreateSandboxRequest](https://wildflower.computer/docs/reference/models/agentcore-create-sandbox-request/) — object — AgentCore is a capability-limited, non-resumable session provider reached through the Wildflower Computer bridge. - [BlaxelCreateSandboxRequest](https://wildflower.computer/docs/reference/models/blaxel-create-sandbox-request/) — object — Blaxel requires workspace context in either the connected profile or an inline X-Provider-Workspace override. - [BoxCreateSandboxRequest](https://wildflower.computer/docs/reference/models/box-create-sandbox-request/) — object — Box creates a fixed Ubuntu VM without injecting account-level Box secrets and permanently removes it on delete. - [CloudflareCreateSandboxRequest](https://wildflower.computer/docs/reference/models/cloudflare-create-sandbox-request/) — object — Cloudflare uses the customer-deployed official Sandbox Bridge. Image and timeout selection are configured in that Worker. - [E2bCreateSandboxRequest](https://wildflower.computer/docs/reference/models/e2b-create-sandbox-request/) — object — E2B creation input using an optional template and sandbox lifetime. - [NovitaCreateSandboxRequest](https://wildflower.computer/docs/reference/models/novita-create-sandbox-request/) — object — Novita Agent Sandbox creation input using an optional template and sandbox lifetime. - [DaytonaCreateSandboxRequest](https://wildflower.computer/docs/reference/models/daytona-create-sandbox-request/) — object — Daytona creation input using an optional container image and rounded TTL. - [ModalCreateSandboxRequest](https://wildflower.computer/docs/reference/models/modal-create-sandbox-request/) — object — Modal uses the customer-owned Wildflower Computer provider bridge and the official Modal SDK. - [SpritesCreateSandboxRequest](https://wildflower.computer/docs/reference/models/sprites-create-sandbox-request/) — object — Sprites provides a fixed environment, sleeps automatically, and persists until deleted. - [RunloopCreateSandboxRequest](https://wildflower.computer/docs/reference/models/runloop-create-sandbox-request/) — object — Runloop Devboxes use the direct REST API and are shut down permanently on delete. - [SmolCreateSandboxRequest](https://wildflower.computer/docs/reference/models/smol-create-sandbox-request/) — object — Smol Cloud creates a persistent hardware-isolated microVM with blocked network egress; the first command automatically starts it. - [VercelCreateSandboxRequest](https://wildflower.computer/docs/reference/models/vercel-create-sandbox-request/) — object — Wildflower Computer creates Vercel sandboxes with persistence enabled and permanently deletes them on delete. - [SandboxMetadata](https://wildflower.computer/docs/reference/models/sandbox-metadata/) — object — Provider provenance and logical operation metadata associated with a sandbox. - [Sandbox](https://wildflower.computer/docs/reference/models/sandbox/) — object — Current normalized state of one provider-backed persistent sandbox. - [SandboxListItem](https://wildflower.computer/docs/reference/models/sandbox-list-item/) — object — Project registry record for a sandbox, including cached status timestamps and deletion history. - [SandboxPage](https://wildflower.computer/docs/reference/models/sandbox-page/) — object — Cursor-paginated page of project sandbox registry records. - [DeletedSandbox](https://wildflower.computer/docs/reference/models/deleted-sandbox/) — intersection — Sandbox response whose normalized state is permanently deleted. - [RunCommandInput](https://wildflower.computer/docs/reference/models/run-command-input/) — object — Bounded command, working directory, and environment executed in an existing sandbox. - [CommandResult](https://wildflower.computer/docs/reference/models/command-result/) — object — Normalized command output and process exit code from an existing sandbox. - [FileEncoding](https://wildflower.computer/docs/reference/models/file-encoding/) — enum — Wire encoding for bounded file content. - [ReadFileInput](https://wildflower.computer/docs/reference/models/read-file-input/) — object — Path and requested encoding for reading one bounded sandbox file. - [ReadFileResult](https://wildflower.computer/docs/reference/models/read-file-result/) — object — Bounded file content read from an existing sandbox. - [WriteFileInput](https://wildflower.computer/docs/reference/models/write-file-input/) — object — Path, content, and encoding for writing one bounded sandbox file. - [WriteFileResult](https://wildflower.computer/docs/reference/models/write-file-result/) — object — Result of writing one bounded file into an existing sandbox. - [ErrorCode](https://wildflower.computer/docs/reference/models/error-code/) — enum — Stable Wildflower Computer error code set, version 3. - [Error](https://wildflower.computer/docs/reference/models/error/) — object — Normalized API failure safe to expose to SDK callers. - [ErrorEnvelope](https://wildflower.computer/docs/reference/models/error-envelope/) — object — JSON envelope returned for every API failure. - [Health](https://wildflower.computer/docs/reference/models/health/) — object — Service liveness and optional build provenance. ## Provider capabilities Generated provider pages show typed create options and non-secret connection context without copying credentials into the documentation bundle. - [AWS AgentCore](https://wildflower.computer/docs/reference/providers/agentcore/) — 1 create fields — 1 typed connection field. - [Blaxel](https://wildflower.computer/docs/reference/providers/blaxel/) — 2 create fields — 1 typed connection field. - [ASCII Box](https://wildflower.computer/docs/reference/providers/box/) — 1 create fields — No additional connection context. - [Cloudflare Sandbox](https://wildflower.computer/docs/reference/providers/cloudflare/) — 0 create fields — 1 typed connection field. - [E2B](https://wildflower.computer/docs/reference/providers/e2b/) — 2 create fields — No additional connection context. - [Novita Agent Sandbox](https://wildflower.computer/docs/reference/providers/novita/) — 2 create fields — No additional connection context. - [Daytona](https://wildflower.computer/docs/reference/providers/daytona/) — 2 create fields — No additional connection context. - [Modal](https://wildflower.computer/docs/reference/providers/modal/) — 2 create fields — 1 typed connection field. - [Runloop](https://wildflower.computer/docs/reference/providers/runloop/) — 2 create fields — No additional connection context. - [Smol Machines](https://wildflower.computer/docs/reference/providers/smol/) — 2 create fields — No additional connection context. - [Fly.io Sprites](https://wildflower.computer/docs/reference/providers/sprites/) — 0 create fields — No additional connection context. - [Vercel Sandbox](https://wildflower.computer/docs/reference/providers/vercel/) — 2 create fields — 2 typed connection fields. ## Stable error codes Handle the stable code, not message text. Retry only the codes classified as retryable, and follow the operation-specific remediation. ### `invalid_request` - **Retry:** Do not retry blindly The request did not satisfy the endpoint contract. **Remediation:** Correct the fields identified by the response message before sending the request again. ### `payload_too_large` - **Retry:** Do not retry blindly The request body or file content exceeded the supported size limit. **Remediation:** Reduce the payload to the documented limit or split the work into smaller operations. ### `request_timeout` - **Retry:** Retryable Wildflower stopped waiting before the operation completed. **Remediation:** Retry with exponential backoff. For create operations, first reconcile using the operation ID because the provider may have succeeded. ### `invalid_idempotency_key` - **Retry:** Do not retry blindly The Idempotency-Key header was missing, malformed, or outside the supported length. **Remediation:** Send a stable, non-secret key that follows the documented Idempotency-Key constraints. ### `idempotency_conflict` - **Retry:** Do not retry blindly The same idempotency key was reused with a different create request. **Remediation:** Reuse the key only for the identical logical request, or generate a new key for changed input. ### `idempotency_in_progress` - **Retry:** Retryable An identical idempotent operation is still running. **Remediation:** Wait for the Retry-After interval and retry the same request with the same idempotency key. ### `idempotency_outcome_unknown` - **Retry:** Do not retry blindly Wildflower cannot safely determine whether a prior create reached the provider. **Remediation:** Do not issue a blind create retry. Reconcile the operation ID with the sandbox registry or support. ### `idempotency_unavailable` - **Retry:** Retryable The idempotency store was temporarily unavailable. **Remediation:** Retry with exponential backoff and the same idempotency key. ### `sandbox_registry_unavailable` - **Retry:** Retryable The sandbox registry could not be read or updated. **Remediation:** Retry with exponential backoff. For create or delete, preserve identifiers and reconcile state before repeating the operation. ### `sandbox_create_outcome_unknown` - **Retry:** Do not retry blindly The provider create outcome could not be confirmed. **Remediation:** Do not create again automatically. Use the operation ID to reconcile the provider and Wildflower registry. ### `invalid_file_content` - **Retry:** Do not retry blindly File content was not valid for the declared wire encoding. **Remediation:** Encode the content as valid UTF-8 or base64 and make the encoding field match. ### `file_not_utf8` - **Retry:** Do not retry blindly The requested file contains bytes that cannot be returned as UTF-8. **Remediation:** Read the file with base64 encoding instead. ### `file_operation_failed` - **Retry:** Do not retry blindly The provider could not complete the requested file operation. **Remediation:** Verify that the path exists, is permitted, and is within provider limits before retrying. ### `missing_api_key` - **Retry:** Do not retry blindly No usable Wildflower or provider credential was supplied. **Remediation:** Configure the required project API key and connect or supply the provider credential. ### `provider_profiles_unavailable` - **Retry:** Retryable Connected provider profiles could not be loaded. **Remediation:** Retry with exponential backoff; do not replace a stored profile unless the failure persists. ### `provider_profile_not_found` - **Retry:** Do not retry blindly The project has no connected profile for the requested provider. **Remediation:** Connect that provider or supply a valid inline provider credential for the request. ### `provider_operation_unavailable` - **Retry:** Do not retry blindly A prior deep verification proved that the connected provider credential cannot perform the requested operation. **Remediation:** Use the response operation, reason, and remediation fields to grant the missing permission, replace the credential, or choose a supported provider. ### `invalid_sandbox_id` - **Retry:** Do not retry blindly The sandbox ID is malformed or names a provider that does not match the route. **Remediation:** Use the opaque sandbox ID returned by Wildflower without modifying it. ### `provider_invalid_request` - **Retry:** Do not retry blindly The selected provider rejected the normalized request as invalid. **Remediation:** Correct provider-specific image, timeout, command, or connection settings before retrying. ### `authentication_error` - **Retry:** Do not retry blindly A Wildflower or upstream provider credential was rejected. **Remediation:** Replace or reconnect the invalid credential, then retry the original operation. ### `control_plane_conflict` - **Retry:** Do not retry blindly The requested account or project mutation conflicts with current control-plane state. **Remediation:** Refresh the current resource state and submit a mutation that satisfies its ownership and lifecycle rules. ### `last_account_owner` - **Retry:** Do not retry blindly The operation would leave an organization without an owner. **Remediation:** Promote another member to owner before removing, demoting, or transferring the current owner. ### `personal_account_immutable` - **Retry:** Do not retry blindly The requested ownership or membership change is not allowed for a personal account. **Remediation:** Use an organization account for shared ownership and membership changes. ### `account_deleting` - **Retry:** Do not retry blindly The account is already in its deletion lifecycle. **Remediation:** Wait for deletion to finish and avoid starting new work in the account. ### `sandbox_not_found` - **Retry:** Do not retry blindly No sandbox visible to this project matches the supplied ID. **Remediation:** Check the project and sandbox ID; a previously deleted sandbox cannot be restored through this endpoint. ### `rate_limited` - **Retry:** Retryable The request exceeded a Wildflower or provider rate limit. **Remediation:** Wait for Retry-After when present, then retry with exponential backoff and jitter. ### `provider_unavailable` - **Retry:** Retryable The selected provider or customer-owned bridge is temporarily unavailable. **Remediation:** Retry with exponential backoff or select another provider when workload portability permits. ### `provider_error` - **Retry:** Do not retry blindly The provider returned a failure that Wildflower could not classify more narrowly. **Remediation:** Inspect the safe response message and operation ID; retry only when the provider condition is known to be transient. ### `internal_error` - **Retry:** Retryable Wildflower encountered an unexpected server-side failure. **Remediation:** Retry with exponential backoff and retain the request or operation ID for support if the failure repeats. ### `legal_acceptance_required` - **Retry:** Do not retry blindly The actor or account must accept the current legal release before continuing. **Remediation:** Review and accept the required documents, then repeat the blocked operation. ### `legal_release_changed` - **Retry:** Do not retry blindly The legal release changed between review and acceptance. **Remediation:** Fetch and review the new current release before submitting acceptance again. ### `legal_not_found` - **Retry:** Do not retry blindly The requested legal document or release does not exist. **Remediation:** Refresh the legal manifest and use a published document and version. ### `legal_unavailable` - **Retry:** Retryable The legal publication or acceptance store is temporarily unavailable. **Remediation:** Retry with exponential backoff; do not assume acceptance was recorded unless it can be confirmed. ### `invalid_email_webhook` - **Retry:** Do not retry blindly The inbound email webhook signature or payload was invalid. **Remediation:** Verify webhook signing configuration and send a payload that matches the documented provider event shape. --- title: "List provider capabilities." description: "API reference for GET /v1/providers: List provider capabilities. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/list-providers/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List provider capabilities. **GET** `/v1/providers` Returns stable provider identifiers, display names, official pricing evidence, and the runtime and lifecycle behavior Wildflower Computer can currently honor for each configured provider. - **Operation ID:** `listProviders` - **Success:** **200** - **Authentication:** **Bearer key** ## Request and response - **Request body:** **None** - **Response:** [ProviderCatalog](https://wildflower.computer/docs/reference/models/provider-catalog/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request GET \ "$WILDFLOWER_URL/v1/providers" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" ``` Response / 200 ```json { "providers": [ { "provider": "e2b", "imageMode": "template", "timeoutMode": "seconds", "timeoutDefaultSeconds": 300, "timeoutGranularitySeconds": 1, "supportsCwd": true, "supportsEnv": true, "outputStreams": "separate", "supportsPersistentResume": false, "supportsExplicitStop": false, "supportsSnapshots": false, "supportsRestore": false, "supportsDelete": true } ] } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const catalog = await client.providers.list(); console.log(catalog.providers); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) catalog = client.providers.list() print(catalog.providers) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let catalog = client.providers().list().await?; println!("{:?}", catalog.providers); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } catalog, err := client.Providers.List(ctx) if err != nil { return err } fmt.Println(catalog.Providers) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var catalog = try client.listProviders(); defer catalog.deinit(); std.debug.print("{any}\n", .{catalog.value.providers}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `list` - [Python](https://wildflower.computer/sdk/python/): `list` - [Rust](https://wildflower.computer/sdk/rust/): `list` - [Go](https://wildflower.computer/sdk/go/): `List` - [Zig](https://wildflower.computer/sdk/zig/): `list` --- title: "List project sandboxes." description: "API reference for GET /v1/sandboxes: List project sandboxes. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/list-sandboxes/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # List project sandboxes. **GET** `/v1/sandboxes` Returns project-scoped registry records in newest-first order, including deleted tombstones. This endpoint never calls a sandbox provider; status is the last provider state observed by Wildflower Computer and statusObservedAt describes its freshness. - **Operation ID:** `listSandboxes` - **Success:** **200** - **Authentication:** **Bearer key** ## Query parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `cursor` | string | Optional | Opaque cursor returned as nextCursor by the previous page. | | `limit` | integer | Optional | Maximum records to return. Defaults to 50. | ## Request and response - **Request body:** **None** - **Response:** [SandboxPage](https://wildflower.computer/docs/reference/models/sandbox-page/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request GET \ "$WILDFLOWER_URL/v1/sandboxes?limit=2" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" ``` Response / 200 ```json { "items": [ { "id": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "provider": "e2b", "status": "running", "metadata": { "nativeProviderId": "native-1" }, "createdAt": "2026-07-28T12:00:00Z", "updatedAt": "2026-07-28T12:00:00Z", "statusObservedAt": "2026-07-28T12:00:00Z" } ], "nextCursor": "next-page" } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const page = await client.sandboxes.list({ limit: 2 }); console.log(page.items, page.nextCursor); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) page = client.sandboxes.list(limit=2) print(page.items, page.next_cursor) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let page = client.sandboxes().list_page(&ListSandboxesOptions { cursor: None, limit: Some(2), }).await?; println!("{:?} {:?}", page.items, page.next_cursor); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } limit := 2 page, err := client.Sandboxes.List(ctx, &wildflower.ListSandboxesOptions{ Limit: &limit, }) if err != nil { return err } fmt.Println(page.Items, page.NextCursor) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var page = try client.listSandboxes(.{ .limit = 2 }); defer page.deinit(); std.debug.print("{any}\n", .{page.value.items}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `list` - [Python](https://wildflower.computer/sdk/python/): `list` - [Rust](https://wildflower.computer/sdk/rust/): `list` - [Go](https://wildflower.computer/sdk/go/): `List` - [Zig](https://wildflower.computer/sdk/zig/): `list` --- title: "AgentcoreCreateSandboxRequest." description: "Generated model reference for AgentcoreCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/agentcore-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # AgentcoreCreateSandboxRequest. AgentCore is a capability-limited, non-resumable session provider reached through the Wildflower Computer bridge. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "agentcore" | Selects the AWS AgentCore Code Interpreter adapter. | | `timeout` | optional | integer | AgentCore Code Interpreter session lifetime in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "BlaxelCreateSandboxRequest." description: "Generated model reference for BlaxelCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/blaxel-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # BlaxelCreateSandboxRequest. Blaxel requires workspace context in either the connected profile or an inline X-Provider-Workspace override. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "blaxel" | Selects the Blaxel sandbox adapter. | | `image` | optional | string | Blaxel runtime image. Defaults to blaxel/base-image:latest. | | `timeout` | optional | integer | Sandbox lifetime in seconds, sent as the Blaxel runtime TTL. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "BoxCreateSandboxRequest." description: "Generated model reference for BoxCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/box-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # BoxCreateSandboxRequest. Box creates a fixed Ubuntu VM without injecting account-level Box secrets and permanently removes it on delete. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "box" | Selects the ASCII Box sandbox adapter. | | `timeout` | optional | integer | Seconds before Box automatically archives the VM. Defaults to one hour. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "CloudflareCreateSandboxRequest." description: "Generated model reference for CloudflareCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/cloudflare-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # CloudflareCreateSandboxRequest. Cloudflare uses the customer-deployed official Sandbox Bridge. Image and timeout selection are configured in that Worker. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "cloudflare" | Selects the customer-deployed Cloudflare Sandbox bridge. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "CommandResult." description: "Generated model reference for CommandResult, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/command-result/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # CommandResult. Normalized command output and process exit code from an existing sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `sandboxId` | required | string | Wildflower sandbox identifier that executed the command. | | `stdout` | required | string | Captured standard output, or combined output for providers that cannot separate streams. | | `stderr` | required | string | Captured standard error, or an empty string when the provider combines output. | | `exitCode` | required | integer | Native command exit code; a non-zero value is still a successful API response. | Additional properties are **rejected**. ## Operation relationships - [Run a command in an existing sandbox](https://wildflower.computer/docs/reference/run-sandbox-command/) — POST — `/v1/sandboxes/{id}/exec` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "CreateSandboxRequest." description: "Generated model reference for CreateSandboxRequest, a Wildflower Computer API union. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # CreateSandboxRequest. Provider-discriminated input for creating one persistent sandbox. - **Schema kind:** union ## Variants Select a variant with the `provider` discriminator. agentcore - [AgentcoreCreateSandboxRequest](https://wildflower.computer/docs/reference/models/agentcore-create-sandbox-request/) blaxel - [BlaxelCreateSandboxRequest](https://wildflower.computer/docs/reference/models/blaxel-create-sandbox-request/) box - [BoxCreateSandboxRequest](https://wildflower.computer/docs/reference/models/box-create-sandbox-request/) cloudflare - [CloudflareCreateSandboxRequest](https://wildflower.computer/docs/reference/models/cloudflare-create-sandbox-request/) e2b - [E2bCreateSandboxRequest](https://wildflower.computer/docs/reference/models/e2b-create-sandbox-request/) novita - [NovitaCreateSandboxRequest](https://wildflower.computer/docs/reference/models/novita-create-sandbox-request/) daytona - [DaytonaCreateSandboxRequest](https://wildflower.computer/docs/reference/models/daytona-create-sandbox-request/) modal - [ModalCreateSandboxRequest](https://wildflower.computer/docs/reference/models/modal-create-sandbox-request/) runloop - [RunloopCreateSandboxRequest](https://wildflower.computer/docs/reference/models/runloop-create-sandbox-request/) smol - [SmolCreateSandboxRequest](https://wildflower.computer/docs/reference/models/smol-create-sandbox-request/) sprites - [SpritesCreateSandboxRequest](https://wildflower.computer/docs/reference/models/sprites-create-sandbox-request/) vercel - [VercelCreateSandboxRequest](https://wildflower.computer/docs/reference/models/vercel-create-sandbox-request/) ## Operation relationships - [Create a persistent running sandbox](https://wildflower.computer/docs/reference/create-sandbox/) — POST — `/v1/sandboxes` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "DaytonaCreateSandboxRequest." description: "Generated model reference for DaytonaCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/daytona-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # DaytonaCreateSandboxRequest. Daytona creation input using an optional container image and rounded TTL. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "daytona" | Selects the Daytona sandbox adapter. | | `image` | optional | string | Daytona container image. | | `timeout` | optional | integer | Sandbox lifetime in seconds. Daytona rounds up to whole TTL minutes. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "DeepProviderProfileTestInput." description: "Generated model reference for DeepProviderProfileTestInput, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/deep-provider-profile-test-input/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # DeepProviderProfileTestInput. Explicit acknowledgement required before a provider-mutating deep verification. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `acknowledgeCostAndMutation` | required | true | Must be true because verification creates, executes in, and deletes a provider sandbox and may incur charges. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "DeletedSandbox." description: "Generated model reference for DeletedSandbox, a Wildflower Computer API intersection. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/deleted-sandbox/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # DeletedSandbox. Sandbox response whose normalized state is permanently deleted. - **Schema kind:** intersection ## Combined members - [Sandbox](https://wildflower.computer/docs/reference/models/sandbox/) object1 inline field ## Operation relationships - [Delete a sandbox](https://wildflower.computer/docs/reference/delete-sandbox/) — DELETE — `/v1/sandboxes/{id}` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "E2bCreateSandboxRequest." description: "Generated model reference for E2bCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/e2b-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # E2bCreateSandboxRequest. E2B creation input using an optional template and sandbox lifetime. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "e2b" | Selects the E2B sandbox adapter. | | `image` | optional | string | E2B template ID. | | `timeout` | optional | integer | Sandbox lifetime in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ErrorCode." description: "Generated model reference for ErrorCode, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/error-code/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ErrorCode. Stable Wildflower Computer error code set, version 3. - **Schema kind:** enum ## Allowed values `invalid_request``payload_too_large``request_timeout``invalid_idempotency_key``idempotency_conflict``idempotency_in_progress``idempotency_outcome_unknown``idempotency_unavailable``sandbox_registry_unavailable``sandbox_create_outcome_unknown``invalid_file_content``file_not_utf8``file_operation_failed``missing_api_key``provider_profiles_unavailable``provider_profile_not_found``provider_operation_unavailable``invalid_sandbox_id``provider_invalid_request``authentication_error``control_plane_conflict``last_account_owner``personal_account_immutable``account_deleting``sandbox_not_found``rate_limited``provider_unavailable``provider_error``internal_error``legal_acceptance_required``legal_release_changed``legal_not_found``legal_unavailable``invalid_email_webhook` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ErrorEnvelope." description: "Generated model reference for ErrorEnvelope, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/error-envelope/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ErrorEnvelope. JSON envelope returned for every API failure. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `error` | required | [Error](https://wildflower.computer/docs/reference/models/error/) | Normalized error body. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "Error." description: "Generated model reference for Error, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/error/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Error. Normalized API failure safe to expose to SDK callers. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `code` | required | [ErrorCode](https://wildflower.computer/docs/reference/models/error-code/) | Stable machine-readable Wildflower error code. | | `message` | required | string | Credential-safe human-readable failure explanation. | | `provider` | optional | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider associated with the failure, when one was selected. | | `operationId` | optional | string | Safe logical operation identifier for support and outcome reconciliation when an operation may have succeeded upstream. | | `orphanedProviderResourceId` | optional | string | Provider-native resource that may require manual cleanup after verification lost a concurrent profile update. | | `reconciliationOperationId` | optional | string | Logical operation identifier to use for provider-side reconciliation. | | `operation` | optional | [ProviderOperation](https://wildflower.computer/docs/reference/models/provider-operation/) | Provider operation blocked by a known credential capability failure. | | `reason` | optional | string | Stable safe explanation for a known provider operation capability failure. | | `remediation` | optional | string | Provider-neutral action needed to make the blocked operation available. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "FileEncoding." description: "Generated model reference for FileEncoding, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/file-encoding/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # FileEncoding. Wire encoding for bounded file content. - **Schema kind:** enum ## Allowed values `utf8``base64` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "Health." description: "Generated model reference for Health, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/health/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Health. Service liveness and optional build provenance. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `status` | required | "ok" | Successful service-health marker. | | `revision` | optional | string | Exact source revision embedded at build time, or development for a local build without provenance. | | `telemetryDelivery` | optional | object | Process-lifetime aggregate delivery counters for non-transactional telemetry. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ImageMode." description: "Generated model reference for ImageMode, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/image-mode/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ImageMode. How a provider selects or fixes the sandbox runtime image. - **Schema kind:** enum ## Allowed values `template``container``blueprint``fixed` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ModalCreateSandboxRequest." description: "Generated model reference for ModalCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/modal-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ModalCreateSandboxRequest. Modal uses the customer-owned Wildflower Computer provider bridge and the official Modal SDK. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "modal" | Selects the customer-owned Modal provider bridge. | | `image` | optional | string | Registry image used to construct the Modal Image. | | `timeout` | optional | integer | Modal sandbox lifetime in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "NovitaCreateSandboxRequest." description: "Generated model reference for NovitaCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/novita-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # NovitaCreateSandboxRequest. Novita Agent Sandbox creation input using an optional template and sandbox lifetime. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "novita" | Selects the Novita Agent Sandbox adapter. | | `image` | optional | string | Novita sandbox template ID. Defaults to base. | | `timeout` | optional | integer | Sandbox lifetime in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "OutputStreams." description: "Generated model reference for OutputStreams, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/output-streams/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # OutputStreams. Whether the provider preserves stdout and stderr separately or returns combined command output. - **Schema kind:** enum ## Allowed values `separate``combined` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderCapabilities." description: "Generated model reference for ProviderCapabilities, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-capabilities/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderCapabilities. Discovery entry with identity, official pricing evidence, and runtime behavior for one configured sandbox provider. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider identifier accepted by create requests. | | `displayName` | required | string | Human-readable provider name for developer interfaces. | | `pricing` | required | [ProviderPricing](https://wildflower.computer/docs/reference/models/provider-pricing/) | Official pricing evidence and an optional normalized catalog comparison. | | `imageMode` | required | [ImageMode](https://wildflower.computer/docs/reference/models/image-mode/) | Image-selection behavior exposed by this provider. | | `timeoutMode` | required | [TimeoutMode](https://wildflower.computer/docs/reference/models/timeout-mode/) | Lifetime-selection behavior exposed by this provider. | | `timeoutDefaultSeconds` | optional | integer | Default sandbox lifetime in seconds when Wildflower supplies one. | | `timeoutMaximumSeconds` | optional | integer | Largest sandbox lifetime accepted through the common API, in seconds. | | `timeoutGranularitySeconds` | optional | integer | Provider timeout rounding or scheduling granularity, in seconds. | | `supportsCwd` | required | boolean | Whether command execution accepts a working directory. | | `supportsEnv` | required | boolean | Whether command execution accepts environment variables. | | `outputStreams` | required | [OutputStreams](https://wildflower.computer/docs/reference/models/output-streams/) | How command stdout and stderr are returned. | | `supportsPersistentResume` | required | boolean | Whether a stopped sandbox can resume with its persistent state. | | `supportsExplicitStop` | required | boolean | Whether the provider exposes an explicit stop operation. | | `supportsSnapshots` | required | boolean | Whether the current Wildflower adapter can create snapshots. | | `supportsRestore` | required | boolean | Whether the current Wildflower adapter can restore snapshots. | | `supportsDelete` | required | boolean | Whether the provider supports permanent sandbox deletion through Wildflower. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderCatalog." description: "Generated model reference for ProviderCatalog, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-catalog/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderCatalog. Identity, pricing evidence, and capability catalog for every provider configured in this Wildflower build. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `pricingProfile` | required | [ProviderPricingProfile](https://wildflower.computer/docs/reference/models/provider-pricing-profile/) | Shared workload and source timestamp for normalized provider pricing. | | `providers` | required | [ProviderCapabilities](https://wildflower.computer/docs/reference/models/provider-capabilities/) [] | Provider identity, pricing, and capabilities in stable catalog order. | Additional properties are **rejected**. ## Operation relationships - [List provider capabilities](https://wildflower.computer/docs/reference/list-providers/) — GET — `/v1/providers` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderOperationReadiness." description: "Generated model reference for ProviderOperationReadiness, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-operation-readiness/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderOperationReadiness. Evidence, failure reason, and remediation for one provider operation. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `operation` | required | [ProviderOperation](https://wildflower.computer/docs/reference/models/provider-operation/) | Provider lifecycle or usage operation represented by this evidence row. | | `status` | required | [ProviderOperationStatus](https://wildflower.computer/docs/reference/models/provider-operation-status/) | Current verification outcome for this provider operation. | | `reason` | required | string | Provider-neutral explanation of why this operation has its current status. | | `remediation` | required | string | Concrete next step for making an unavailable or failed operation usable. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderOperationStatus." description: "Generated model reference for ProviderOperationStatus, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-operation-status/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderOperationStatus. Current evidence state for one provider operation. - **Schema kind:** enum ## Allowed values `unverified``verified``unavailable``failed``not_run` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderOperation." description: "Generated model reference for ProviderOperation, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-operation/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderOperation. Provider operation whose credential entitlement or evidence was evaluated. - **Schema kind:** enum ## Allowed values `create``get``exec``delete``usage` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderPricingProfile." description: "Generated model reference for ProviderPricingProfile, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-pricing-profile/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderPricingProfile. Versioned workload used to compare published provider prices without implying an invoice quote. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `id` | required | string | Stable identifier for this normalized comparison profile. | | `currency` | required | string | Currency used by every normalized amount in this catalog. | | `vcpus` | required | integer | Fully busy virtual CPUs in the comparison workload. | | `memoryGib` | required | integer | Memory in GiB held for the complete comparison workload. | | `durationSeconds` | required | integer | Complete duration of the comparison workload in seconds. | | `cpuUtilizationPercent` | required | integer | CPU utilization assumed for the complete comparison duration. | | `storageIncluded` | required | boolean | Whether storage charges are included in the normalized amount. | | `description` | required | string | Human-readable explanation of the normalized workload. | | `capturedAt` | required | string | UTC timestamp when every official pricing source was captured. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderPricing." description: "Generated model reference for ProviderPricing, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-pricing/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderPricing. Official provider pricing evidence and, when published rates permit it, a normalized catalog comparison. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `normalizedBusyHourUsd` | required | string \| null | Exact six-decimal USD estimate for the catalog comparison profile, or null when the provider does not publish comparable unit rates. | | `billingBasis` | required | string | Provider-specific resource or activity basis used for billing. | | `sourceUrl` | required | string | Primary official provider page used to extract pricing or billing evidence. | | `sourceDigest` | required | string | SHA-256 digest binding the provider's configured official source captures. | | `caveat` | required | string | Important provider-specific limitation on interpreting the normalized amount. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileCatalog." description: "Generated model reference for ProviderProfileCatalog, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-catalog/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileCatalog. Redacted project-scoped provider profiles visible to the authenticated project. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `profiles` | required | [ProviderProfile](https://wildflower.computer/docs/reference/models/provider-profile/) [] | Connected profiles without provider credentials. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileConnection." description: "Generated model reference for ProviderProfileConnection, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-connection/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileConnection. Non-secret provider-specific routing context stored with or supplied alongside a provider credential. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `bridgeUrl` | optional | string | Required for AgentCore, Cloudflare, and Modal. | | `workspace` | optional | string | Required for Blaxel. | | `teamId` | optional | string | Required for Vercel. | | `projectId` | optional | string | Required for Vercel. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileInput." description: "Generated model reference for ProviderProfileInput, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-input/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileInput. Credential and optional non-secret connection context used to connect one project-scoped provider profile. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `apiKey` | required | string | The provider credential or customer-owned bridge bearer token. | | `connection` | optional | [ProviderProfileConnection](https://wildflower.computer/docs/reference/models/provider-profile-connection/) | Provider-specific routing context required in addition to the credential. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfilePersistence." description: "Generated model reference for ProviderProfilePersistence, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-persistence/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfilePersistence. Storage boundary currently protecting a connected provider profile. - **Schema kind:** enum ## Allowed values `process_memory``encrypted_database` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileReadiness." description: "Generated model reference for ProviderProfileReadiness, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-readiness/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileReadiness. Persisted operation-level readiness for a connected provider profile. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `status` | required | [ProviderProfileStatus](https://wildflower.computer/docs/reference/models/provider-profile-status/) | Overall readiness derived from the required lifecycle operations and cleanup safety. | | `checkedAt` | required | string \| null | Last deep provider verification time, or null when no provider request has run. | | `verificationExpiresAt` | optional | string | Time after which successful readiness evidence becomes unverified and deep verification must run again. Omitted when no valid verification timestamp exists. | | `operations` | required | [ProviderOperationReadiness](https://wildflower.computer/docs/reference/models/provider-operation-readiness/) [] | Per-operation verification evidence retained from the most recent deep check. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileStatus." description: "Generated model reference for ProviderProfileStatus, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-status/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileStatus. Overall provider profile readiness derived from the required operation matrix. - **Schema kind:** enum ## Allowed values `unverified``ready``degraded``invalid``unsafe` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfileTest." description: "Generated model reference for ProviderProfileTest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile-test/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfileTest. Safe or deep provider profile result with per-operation evidence and cleanup state. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider whose stored profile was tested. | | `ready` | required | boolean | Whether the four required lifecycle operations are verified. Optional usage can remain unavailable. | | `profile` | required | "passed" | Profile decryption and resolution result. | | `adapter` | required | "passed" | Installed adapter discovery result. | | `providerAuthentication` | required | string | Provider authentication evidence available to this result. | | `status` | required | [ProviderProfileStatus](https://wildflower.computer/docs/reference/models/provider-profile-status/) | Overall readiness derived from the operation results in this test. | | `mode` | required | [ProviderTestMode](https://wildflower.computer/docs/reference/models/provider-test-mode/) | Whether this was a non-mutating local check or a provider-mutating deep verification. | | `checkedAt` | required | string \| null | Deep verification time, or null when the provider has never been called. | | `operations` | required | [ProviderOperationReadiness](https://wildflower.computer/docs/reference/models/provider-operation-readiness/) [] | Per-operation evidence produced or reused by this test. | | `orphanedProviderResourceId` | optional | string | Provider-native resource that could not be proven deleted. Present only when status is unsafe. | | `reconciliationOperationId` | optional | string | Operation identifier to use when reconciling an ambiguous create or failed cleanup with the provider. | | `message` | required | string | Human-readable explanation of the keyless readiness result. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderProfile." description: "Generated model reference for ProviderProfile, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-profile/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderProfile. Redacted metadata for a connected project-scoped provider profile. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider associated with this connected profile. | | `connected` | required | true | Always true for a profile returned by the connected-profile catalog. | | `persistence` | required | [ProviderProfilePersistence](https://wildflower.computer/docs/reference/models/provider-profile-persistence/) | Storage boundary used for the profile credential. | | `connection` | required | Record | Non-secret provider-specific connection context. | | `readiness` | required | [ProviderProfileReadiness](https://wildflower.computer/docs/reference/models/provider-profile-readiness/) | Last verified provider operation matrix. A newly connected profile is unverified. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ProviderTestMode." description: "Generated model reference for ProviderTestMode, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider-test-mode/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ProviderTestMode. Whether the result came from a non-mutating safe check or a provider-mutating deep verification. - **Schema kind:** enum ## Allowed values `safe``deep` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "Provider." description: "Generated model reference for Provider, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/provider/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Provider. Stable provider identifier used for creation, routing, capability discovery, and errors. - **Schema kind:** enum ## Allowed values `agentcore``blaxel``box``cloudflare``e2b``novita``daytona``modal``runloop``smol``sprites``vercel` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ReadFileInput." description: "Generated model reference for ReadFileInput, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/read-file-input/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ReadFileInput. Path and requested encoding for reading one bounded sandbox file. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `path` | required | string | Absolute or sandbox-relative file path to read. | | `encoding` | optional | [FileEncoding](https://wildflower.computer/docs/reference/models/file-encoding/) | Requested response encoding; defaults to UTF-8. | Additional properties are **rejected**. ## Operation relationships - [Read a file from an existing sandbox](https://wildflower.computer/docs/reference/read-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/read` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "ReadFileResult." description: "Generated model reference for ReadFileResult, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/read-file-result/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ReadFileResult. Bounded file content read from an existing sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `sandboxId` | required | string | Wildflower sandbox identifier from which the file was read. | | `path` | required | string | File path that was read. | | `content` | required | string | File content encoded according to the encoding field. | | `encoding` | required | [FileEncoding](https://wildflower.computer/docs/reference/models/file-encoding/) | Encoding used for the returned content. | Additional properties are **rejected**. ## Operation relationships - [Read a file from an existing sandbox](https://wildflower.computer/docs/reference/read-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/read` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "RunCommandInput." description: "Generated model reference for RunCommandInput, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/run-command-input/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # RunCommandInput. Bounded command, working directory, and environment executed in an existing sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `command` | required | string | Shell command to execute without replacing the sandbox. | | `cwd` | optional | string | Optional existing working directory for command execution. | | `env` | optional | Record | Optional environment variables supplied only to this command. | Additional properties are **rejected**. ## Operation relationships - [Run a command in an existing sandbox](https://wildflower.computer/docs/reference/run-sandbox-command/) — POST — `/v1/sandboxes/{id}/exec` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "RunloopCreateSandboxRequest." description: "Generated model reference for RunloopCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/runloop-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # RunloopCreateSandboxRequest. Runloop Devboxes use the direct REST API and are shut down permanently on delete. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "runloop" | Selects the Runloop Devbox adapter. | | `image` | optional | string | Runloop Blueprint name. The default starter image is used when omitted. | | `timeout` | optional | integer | Devbox maximum lifetime in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SandboxListItem." description: "Generated model reference for SandboxListItem, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sandbox-list-item/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SandboxListItem. Project registry record for a sandbox, including cached status timestamps and deletion history. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `id` | required | string | Opaque project-scoped Wildflower sandbox identifier. | | `provider` | required | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider selected when this sandbox was created. | | `status` | required | [SandboxStatus](https://wildflower.computer/docs/reference/models/sandbox-status/) | Last normalized state observed by Wildflower. | | `metadata` | required | [SandboxMetadata](https://wildflower.computer/docs/reference/models/sandbox-metadata/) | Provider-native and logical operation metadata. | | `createdAt` | required | string | When Wildflower first registered the sandbox. | | `updatedAt` | required | string | When Wildflower last changed this registry record. | | `statusObservedAt` | required | string | When Wildflower Computer last observed this status. List does not refresh provider state. | | `deletedAt` | optional | string | When deletion completed, when this item is a tombstone. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SandboxMetadata." description: "Generated model reference for SandboxMetadata, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sandbox-metadata/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SandboxMetadata. Provider provenance and logical operation metadata associated with a sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `nativeProviderId` | required | string | The provider-native sandbox ID retained for debugging. | | `nativeProviderVersion` | optional | string | Provider runtime or protocol version when the provider exposes one. | | `operationId` | optional | string | Wildflower Computer logical create-operation identifier, also attached to provider resources when the provider supports metadata or names. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SandboxPage." description: "Generated model reference for SandboxPage, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sandbox-page/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SandboxPage. Cursor-paginated page of project sandbox registry records. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `items` | required | [SandboxListItem](https://wildflower.computer/docs/reference/models/sandbox-list-item/) [] | Sandbox registry records in newest-first order. | | `nextCursor` | optional | string | Pass this opaque value as cursor to fetch the next page. Omitted on the final page. | Additional properties are **rejected**. ## Operation relationships - [List project sandboxes](https://wildflower.computer/docs/reference/list-sandboxes/) — GET — `/v1/sandboxes` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SandboxStatus." description: "Generated model reference for SandboxStatus, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sandbox-status/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SandboxStatus. Provider-neutral sandbox lifecycle state observed by Wildflower Computer. - **Schema kind:** enum ## Allowed values `creating``running``paused``stopped``deleting``deleted``error``unknown` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "Sandbox." description: "Generated model reference for Sandbox, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sandbox/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Sandbox. Current normalized state of one provider-backed persistent sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `id` | required | string | Opaque project-scoped Wildflower sandbox identifier used by later lifecycle calls. | | `provider` | required | [Provider](https://wildflower.computer/docs/reference/models/provider/) | Provider selected when this sandbox was created. | | `status` | required | [SandboxStatus](https://wildflower.computer/docs/reference/models/sandbox-status/) | Current normalized provider state. | | `metadata` | required | [SandboxMetadata](https://wildflower.computer/docs/reference/models/sandbox-metadata/) | Provider-native and logical operation metadata. | Additional properties are **rejected**. ## Operation relationships - [Create a persistent running sandbox](https://wildflower.computer/docs/reference/create-sandbox/) — POST — `/v1/sandboxes` - [Get a sandbox](https://wildflower.computer/docs/reference/get-sandbox/) — GET — `/v1/sandboxes/{id}` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SmolCreateSandboxRequest." description: "Generated model reference for SmolCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/smol-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SmolCreateSandboxRequest. Smol Cloud creates a persistent hardware-isolated microVM with blocked network egress; the first command automatically starts it. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "smol" | Selects the Smol Cloud machine adapter. | | `image` | optional | string | OCI image reference. Defaults to alpine. | | `timeout` | optional | integer | Machine lifetime in seconds, sent as Smol Cloud ttlSeconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "SpritesCreateSandboxRequest." description: "Generated model reference for SpritesCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/sprites-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # SpritesCreateSandboxRequest. Sprites provides a fixed environment, sleeps automatically, and persists until deleted. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "sprites" | Selects the Fly.io Sprites adapter. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "TimeoutMode." description: "Generated model reference for TimeoutMode, a Wildflower Computer API enum. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/timeout-mode/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # TimeoutMode. Whether sandbox lifetime is configured in seconds or managed entirely by the provider. - **Schema kind:** enum ## Allowed values `seconds``provider_managed` ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "VercelCreateSandboxRequest." description: "Generated model reference for VercelCreateSandboxRequest, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/vercel-create-sandbox-request/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # VercelCreateSandboxRequest. Wildflower Computer creates Vercel sandboxes with persistence enabled and permanently deletes them on delete. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `provider` | required | "vercel" | Selects the Vercel Sandbox adapter. | | `image` | optional | string | Vercel Container Registry image. The stock runtime is used when omitted. | | `timeout` | optional | integer | Vercel sandbox session timeout in seconds. | Additional properties are **rejected**. ## Operation relationships This model is referenced by another public model rather than directly by an operation boundary. [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "WriteFileInput." description: "Generated model reference for WriteFileInput, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/write-file-input/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # WriteFileInput. Path, content, and encoding for writing one bounded sandbox file. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `path` | required | string | Absolute or sandbox-relative destination path whose parent already exists. | | `content` | required | string | File content encoded according to the encoding field. | | `encoding` | optional | [FileEncoding](https://wildflower.computer/docs/reference/models/file-encoding/) | Encoding of the supplied content; defaults to UTF-8. | Additional properties are **rejected**. ## Operation relationships - [Write a file in an existing sandbox](https://wildflower.computer/docs/reference/write-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/write` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "WriteFileResult." description: "Generated model reference for WriteFileResult, a Wildflower Computer API object. Review its documented fields, variants, and contract relationships." canonical: "https://wildflower.computer/docs/reference/models/write-file-result/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # WriteFileResult. Result of writing one bounded file into an existing sandbox. - **Schema kind:** object ## Fields | Field | Presence | Type | Description | | --- | --- | --- | --- | | `sandboxId` | required | string | Wildflower sandbox identifier into which the file was written. | | `path` | required | string | Destination path that was written. | | `bytesWritten` | required | integer | Decoded byte count written to the sandbox file. | Additional properties are **rejected**. ## Operation relationships - [Write a file in an existing sandbox](https://wildflower.computer/docs/reference/write-sandbox-file/) — POST — `/v1/sandboxes/{id}/files/write` [← All public models](https://wildflower.computer/docs/reference/#models) --- title: "AWS AgentCore" description: "AWS AgentCore capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/agentcore/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # AWS AgentCore This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`agentcore`** - **Create input:** **timeout** - **Connection fields:** **1** ## Create options The generated create input exposes these provider-specific fields: - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **fixed** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Default: 900 seconds. Maximum: 28,800 seconds. Granularity: 1 second. ## Connection context These values identify provider-side workspace or bridge context. They are not credentials and remain separate from the provider API key. | Field | Inline header | | --- | --- | | `bridgeUrl` | `X-Provider-Bridge-Url` | > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **provider telemetry** - **Wildflower integration:** **additional credentials required** - **Provider granularity:** **session** - **Expected lag:** **up to 60 minutes for resource telemetry** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **AWS AgentCore provider cost is not available** > > AgentCore exposes usage telemetry, not an authoritative per-session invoice amount through the sandbox lifecycle API. > > [Review the official provider signal source](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-runtime-metrics.html). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Blaxel" description: "Blaxel capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/blaxel/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Blaxel This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`blaxel`** - **Create input:** **image and timeout** - **Connection fields:** **1** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **container** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Granularity: 1 second. ## Connection context These values identify provider-side workspace or bridge context. They are not credentials and remain separate from the provider API key. | Field | Inline header | | --- | --- | | `workspace` | `X-Provider-Workspace` | > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **provider billing api** - **Wildflower integration:** **additional scope required** - **Provider granularity:** **resource** - **Expected lag:** **a few minutes or longer under load** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Blaxel provider cost is not available** > > The provider has a resource-centric Billing Explorer API, but Wildflower requires a separately verified billing scope before querying it. > > [Review the official provider signal source](https://docs.blaxel.ai/Security/Billing-Explorer-API). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) - [Read the detailed Blaxel behavior guide](https://wildflower.computer/providers/blaxel/) --- title: "ASCII Box" description: "ASCII Box capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/box/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # ASCII Box This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`box`** - **Create input:** **timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **fixed** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Supported** - **Snapshots / restore:** **Supported** - **Delete:** **Supported** Default: 3,600 seconds. Maximum: 2,592,000 seconds. Granularity: 1 second. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **no documented api** - **Wildflower integration:** **estimate only** - **Provider granularity:** **none** - **Expected lag:** **unknown** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **ASCII Box provider cost is not available** > > Only the published fixed-VM rate is available to Wildflower. > > [Review the official provider signal source](https://box.ascii.dev/). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Cloudflare Sandbox" description: "Cloudflare Sandbox capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/cloudflare/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Cloudflare Sandbox This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`cloudflare`** - **Create input:** **No provider-specific create options** - **Connection fields:** **1** ## Create options Wildflower rejects provider-specific create options for this adapter instead of silently ignoring them. ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **fixed** - **Timeout:** **provider managed** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Not supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** ## Connection context These values identify provider-side workspace or bridge context. They are not credentials and remain separate from the provider API key. | Field | Inline header | | --- | --- | | `bridgeUrl` | `X-Provider-Bridge-Url` | > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **provider analytics api** - **Wildflower integration:** **additional credentials required** - **Provider granularity:** **instance** - **Expected lag:** **analytics pipeline delay** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Cloudflare Sandbox provider cost is not available** > > Cloudflare exposes per-instance usage metrics, but the current bridge contract does not expose the required analytics identity or credential. > > [Review the official provider signal source](https://developers.cloudflare.com/analytics/graphql-api/tutorials/querying-container-metrics/). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Daytona" description: "Daytona capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/daytona/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Daytona This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`daytona`** - **Create input:** **image and timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **container** - **Timeout:** **seconds** - **Output streams:** **combined** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Not supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Granularity: 60 seconds. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **dashboard only** - **Wildflower integration:** **estimate only** - **Provider granularity:** **sandbox** - **Expected lag:** **billing settlement may lag** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Daytona provider cost is not available** > > Per-sandbox billing details exist in the provider UI but are not returned through the current adapter API. > > [Review the official provider signal source](https://www.daytona.io/docs/billing). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) - [Read the detailed Daytona behavior guide](https://wildflower.computer/providers/daytona/) --- title: "E2B" description: "E2B capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/e2b/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # E2B This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`e2b`** - **Create input:** **image and timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **template** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Not supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Default: 300 seconds. Granularity: 1 second. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **dashboard only** - **Wildflower integration:** **estimate only** - **Provider granularity:** **account** - **Expected lag:** **not documented as a per-sandbox API contract** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **E2B provider cost is not available** > > Wildflower can estimate published rates but cannot retrieve an authoritative per-sandbox amount. > > [Review the official provider signal source](https://e2b.dev/docs/billing). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) - [Read the detailed E2B behavior guide](https://wildflower.computer/providers/e2b/) --- title: "Modal" description: "Modal capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/modal/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Modal This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`modal`** - **Create input:** **image and timeout** - **Connection fields:** **1** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **container** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Granularity: 1 second. ## Connection context These values identify provider-side workspace or bridge context. They are not credentials and remain separate from the provider API key. | Field | Inline header | | --- | --- | | `bridgeUrl` | `X-Provider-Bridge-Url` | > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **aggregate billing report** - **Wildflower integration:** **unsupported per sandbox** - **Provider granularity:** **workspace hour or day** - **Expected lag:** **several minutes** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Modal provider cost is not available** > > Modal does not provide the per-sandbox provider-reported cost needed by Wildflower's common usage contract. > > [Review the official provider signal source](https://modal.com/docs/guide/billing). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Novita Agent Sandbox" description: "Novita Agent Sandbox capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/novita/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Novita Agent Sandbox This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`novita`** - **Create input:** **image and timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **template** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Default: 300 seconds. Granularity: 1 second. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **dashboard export** - **Wildflower integration:** **estimate only** - **Provider granularity:** **account** - **Expected lag:** **not documented as a per-sandbox API contract** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Novita Agent Sandbox provider cost is not available** > > Wildflower has published CPU and memory rates but no authoritative per-sandbox billing response. > > [Review the official provider signal source](https://novita.ai/docs/guides/sandbox-pricing). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Runloop" description: "Runloop capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/runloop/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Runloop This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`runloop`** - **Create input:** **image and timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **blueprint** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Not supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Maximum: 172,800 seconds. Granularity: 1 second. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **no documented api** - **Wildflower integration:** **estimate only** - **Provider granularity:** **none** - **Expected lag:** **unknown** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Runloop provider cost is not available** > > Only published resource rates are available to Wildflower. > > [Review the official provider signal source](https://runloop.ai/pricing). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) - [Read the detailed Runloop behavior guide](https://wildflower.computer/providers/runloop/) --- title: "Smol Machines" description: "Smol Machines capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/smol/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Smol Machines This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`smol`** - **Create input:** **image and timeout** - **Connection fields:** **0** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **container** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Granularity: 1 second. ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **per machine metered usage and cost** - **Wildflower integration:** **provider signal not integrated** - **Provider granularity:** **machine** - **Expected lag:** **provider-defined** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Smol Machines provider cost is not available** > > Smol documents per-machine metered cost, but Wildflower has not integrated and live-verified that signal; comparable public unit rates are not published. > > [Review the official provider signal source](https://smolmachines.com/docs/cloud-api). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Fly.io Sprites" description: "Fly.io Sprites capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/sprites/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Fly.io Sprites This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`sprites`** - **Create input:** **No provider-specific create options** - **Connection fields:** **0** ## Create options Wildflower rejects provider-specific create options for this adapter instead of silently ignoring them. ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **fixed** - **Timeout:** **provider managed** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** ## Connection context This adapter needs no additional non-secret connection fields. Its provider credential is still connected separately or supplied as an inline override. > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **no documented api** - **Wildflower integration:** **estimate only** - **Provider granularity:** **none** - **Expected lag:** **unknown** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Fly.io Sprites provider cost is not available** > > Sprites bills actual consumption, so Wildflower's normalized wall-time estimate is intentionally low-confidence. > > [Review the official provider signal source](https://fly.io/sprites). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) - [Read the detailed Fly.io Sprites behavior guide](https://wildflower.computer/providers/sprites/) --- title: "Vercel Sandbox" description: "Vercel Sandbox capability reference generated from the Wildflower Computer SDK contract, including create fields and non-secret connection context." canonical: "https://wildflower.computer/docs/reference/providers/vercel/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Vercel Sandbox This reference is generated from the same provider capability model used by every Wildflower SDK. It describes the portable create surface and the non-secret connection context kept separate from provider credentials. - **Contract value:** **`vercel`** - **Create input:** **image and timeout** - **Connection fields:** **2** ## Create options The generated create input exposes these provider-specific fields: - `image` - `timeout` ## Runtime behavior These capability facts come from the same generator-owned model used by the provider catalog and SDK documentation. - **Image selection:** **container** - **Timeout:** **seconds** - **Output streams:** **separate** - **Working directory:** **Supported** - **Environment variables:** **Supported** - **Persistent resume:** **Supported** - **Explicit stop:** **Not supported** - **Snapshots / restore:** **Not supported** - **Delete:** **Supported** Granularity: 1 second. ## Connection context These values identify provider-side workspace or bridge context. They are not credentials and remain separate from the provider API key. | Field | Inline header | | --- | --- | | `teamId` | `X-Provider-Team-Id` | | `projectId` | `X-Provider-Project-Id` | > **Credentials never enter the create body** > > Connect the provider once for the project, or send a typed inline credential override. Wildflower keeps credentials in authentication headers and never serializes them into sandbox JSON. ## Usage, cost, and latency evidence - **Billing signal:** **account usage report** - **Wildflower integration:** **unsupported per sandbox** - **Provider granularity:** **team or account** - **Expected lag:** **provider reporting delay** - **Provider-reported cost:** **Unavailable** - **Live credential proof:** **Not verified** > **Vercel Sandbox provider cost is not available** > > Wildflower cannot attribute the provider's account-level usage report to one sandbox without an authoritative mapping. > > [Review the official provider signal source](https://vercel.com/docs/cli/usage). A normalized list-price estimate remains separate from provider reporting and invoice reconciliation. ## Continue - [Connect a project provider profile](https://wildflower.computer/docs/provider-profiles/) - [Review cost fidelity and benchmark rules](https://wildflower.computer/docs/provider-observability/) - [Browse generated operations and models](https://wildflower.computer/docs/reference/) --- title: "Read a file from an existing sandbox." description: "API reference for POST /v1/sandboxes/{id}/files/read: Read a file from an existing sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/read-sandbox-file/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Read a file from an existing sandbox. **POST** `/v1/sandboxes/{id}/files/read` Reads one file through the shared sandbox command boundary. UTF-8 is the default; use base64 for binary content. - **Operation ID:** `readSandboxFile` - **Success:** **200** - **Authentication:** **Bearer key** ## Path parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `id` | string | Required | Opaque, project-scoped Wildflower sandbox ID returned by create. The provider namespace is visible, but the random payload does not encode the provider-native ID. | ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | ## Request and response - **Request body:** [ReadFileInput](https://wildflower.computer/docs/reference/models/read-file-input/) - **Response:** [ReadFileResult](https://wildflower.computer/docs/reference/models/read-file-result/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/files/read" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{"path":"/tmp/hello.txt","encoding":"utf8"}' ``` Response / 200 ```json { "sandboxId": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "path": "/tmp/hello.txt", "content": "hello", "encoding": "utf8" } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); const file = await handle.readFile({ path: "/tmp/hello.txt", encoding: "utf8", }); console.log(file.content); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") file = handle.read_file( ReadFileInput(path="/tmp/hello.txt", encoding="utf8") ) print(file.content) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let handle = client.sandboxes().attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")?; let file = handle.read_file(&ReadFileInput { path: "/tmp/hello.txt".to_owned(), encoding: FileEncoding::Utf8, }).await?; println!("{}", file.content); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } handle, err := client.Sandboxes.Attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") if err != nil { return err } encoding := wildflower.FileEncodingUtf8 file, err := handle.ReadFile(ctx, wildflower.ReadFileInput{ Path: "/tmp/hello.txt", Encoding: &encoding, }) if err != nil { return err } fmt.Println(file.Content) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var handle = client.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); var file = try handle.readFile(.{ .path = "/tmp/hello.txt", .encoding = .utf8, }); defer file.deinit(); std.debug.print("{s}\n", .{file.value.content}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `readFile` - [Python](https://wildflower.computer/sdk/python/): `read_file` - [Rust](https://wildflower.computer/sdk/rust/): `read_file` - [Go](https://wildflower.computer/sdk/go/): `ReadFile` - [Zig](https://wildflower.computer/sdk/zig/): `readFile` --- title: "Run a command in an existing sandbox." description: "API reference for POST /v1/sandboxes/{id}/exec: Run a command in an existing sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/run-sandbox-command/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Run a command in an existing sandbox. **POST** `/v1/sandboxes/{id}/exec` Runs a command without replacing the sandbox, preserving its filesystem and state. - **Operation ID:** `runSandboxCommand` - **Success:** **200** - **Authentication:** **Bearer key** ## Path parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `id` | string | Required | Opaque, project-scoped Wildflower sandbox ID returned by create. The provider namespace is visible, but the random payload does not encode the provider-native ID. | ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | ## Request and response - **Request body:** [RunCommandInput](https://wildflower.computer/docs/reference/models/run-command-input/) - **Response:** [CommandResult](https://wildflower.computer/docs/reference/models/command-result/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/exec" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{"command":"echo hello","cwd":"/workspace"}' ``` Response / 200 ```json { "sandboxId": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "stdout": "hello\n", "stderr": "", "exitCode": 0 } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); const result = await handle.runCommand({ command: "echo hello", cwd: "/workspace", }); console.log(result.stdout, result.stderr, result.exitCode); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") result = handle.run_command( RunCommandInput(command="echo hello", cwd="/workspace") ) print(result.stdout, result.stderr, result.exit_code) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let handle = client.sandboxes().attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")?; let result = handle.run_command(&RunCommandInput { command: "echo hello".to_owned(), cwd: Some("/workspace".to_owned()), env: None, }).await?; println!("{} {} {}", result.stdout, result.stderr, result.exit_code); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } handle, err := client.Sandboxes.Attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") if err != nil { return err } cwd := "/workspace" result, err := handle.RunCommand(ctx, wildflower.RunCommandInput{ Command: "echo hello", Cwd: &cwd, }) if err != nil { return err } fmt.Println(result.Stdout, result.Stderr, result.ExitCode) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var handle = client.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); var result = try handle.runCommand(.{ .command = "echo hello", .cwd = "/workspace", }); defer result.deinit(); std.debug.print("{s} {d}\n", .{ result.value.stdout, result.value.exit_code }); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `runCommand` - [Python](https://wildflower.computer/sdk/python/): `run_command` - [Rust](https://wildflower.computer/sdk/rust/): `run_command` - [Go](https://wildflower.computer/sdk/go/): `RunCommand` - [Zig](https://wildflower.computer/sdk/zig/): `runCommand` --- title: "Write a file in an existing sandbox." description: "API reference for POST /v1/sandboxes/{id}/files/write: Write a file in an existing sandbox. Review its parameters, input, response, and generated SDK method names." canonical: "https://wildflower.computer/docs/reference/write-sandbox-file/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Write a file in an existing sandbox. **POST** `/v1/sandboxes/{id}/files/write` Writes one file through the shared sandbox command boundary. Parent directories must already exist and writes are limited to 1 MiB. - **Operation ID:** `writeSandboxFile` - **Success:** **200** - **Authentication:** **Bearer key** ## Path parameters | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `id` | string | Required | Opaque, project-scoped Wildflower sandbox ID returned by create. The provider namespace is visible, but the random payload does not encode the provider-native ID. | ## Optional provider context These headers are inline overrides. Connected project profiles keep the same fields outside individual requests. | Name | Type | Requirement | Meaning | | --- | --- | --- | --- | | `X-Provider-Workspace` | string | Optional | Optional inline provider workspace override. Required with an inline Blaxel credential and omitted when using a connected profile. | ## Request and response - **Request body:** [WriteFileInput](https://wildflower.computer/docs/reference/models/write-file-input/) - **Response:** [WriteFileResult](https://wildflower.computer/docs/reference/models/write-file-result/) ## HTTP example This credential-safe request and its representative success response are generated with the operation contract. Replace placeholder IDs and read secrets from your environment. Request ```bash curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes/wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/files/write" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Content-Type: application/json" \ --data '{"path":"/tmp/hello.txt","content":"hello","encoding":"utf8"}' ``` Response / 200 ```json { "sandboxId": "wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "path": "/tmp/hello.txt", "bytesWritten": 5 } ``` ## SDK examples Use the same operation through any generated client. Each snippet comes from the SDK generator rather than a hand-copied website example. ### TypeScript ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); const written = await handle.writeFile({ path: "/tmp/hello.txt", content: "hello", encoding: "utf8", }); console.log(written.bytesWritten); ``` ### Python ```python import os from wildflower import ( E2bCreateSandboxInput, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, ) client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) handle = client.sandboxes.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") written = handle.write_file( WriteFileInput( path="/tmp/hello.txt", content="hello", encoding="utf8", ) ) print(written.bytes_written) ``` ### Rust ```rust use wildflower::{ CreateSandboxInput, FileEncoding, ListSandboxesOptions, ReadFileInput, RunCommandInput, WriteFileInput, Wildflower, }; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let handle = client.sandboxes().attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")?; let written = handle.write_file(&WriteFileInput { path: "/tmp/hello.txt".to_owned(), content: "hello".to_owned(), encoding: FileEncoding::Utf8, }).await?; println!("{}", written.bytes_written); ``` ### Go ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } handle, err := client.Sandboxes.Attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") if err != nil { return err } encoding := wildflower.FileEncodingUtf8 written, err := handle.WriteFile(ctx, wildflower.WriteFileInput{ Path: "/tmp/hello.txt", Content: "hello", Encoding: &encoding, }) if err != nil { return err } fmt.Println(written.BytesWritten) ``` ### Zig ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var handle = client.attach("wf_e2b_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); var written = try handle.writeFile(.{ .path = "/tmp/hello.txt", .content = "hello", .encoding = .utf8, }); defer written.deinit(); std.debug.print("{d}\n", .{written.value.bytes_written}); ``` ## Generated SDK methods Every name below comes from the generator mapping for this operation, so a language-specific rename creates website drift. - [TypeScript](https://wildflower.computer/sdk/typescript/): `writeFile` - [Python](https://wildflower.computer/sdk/python/): `write_file` - [Rust](https://wildflower.computer/sdk/rust/): `write_file` - [Go](https://wildflower.computer/sdk/go/): `WriteFile` - [Zig](https://wildflower.computer/sdk/zig/): `writeFile` --- title: "Retry what you can prove." description: "Retry Wildflower Computer requests safely using create idempotency keys, explicit reconciliation, rate-limit headers, and request correlation." canonical: "https://wildflower.computer/docs/reliability/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Retry what you can prove. Network failures do not always reveal whether a provider created a resource. Wildflower fails closed around uncertain outcomes and gives callers explicit tools for replay, reconciliation, and support. ## Give every logical create one key Generate an idempotency key before the first create attempt and persist it with your job. A completed request replayed with the same key, body, and non-secret provider connection context returns the original sandbox. ```bash idempotency_key="$(openssl rand -hex 24)" curl --fail-with-body --request POST \ "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "Idempotency-Key: $idempotency_key" \ -H "Content-Type: application/json" \ --data '{"provider":"e2b","image":"base","timeout":300}' ``` > **Never mutate a request behind the same key** > > Reusing a key with different input returns`idempotency_conflict`. Concurrent attempts can return`idempotency_in_progress`. Keep one key attached to one immutable logical create. ## Use a small retry policy | Outcome | Next action | | --- | --- | | `429 rate_limited` | Wait for `Retry-After`, then retry with jitter. | | `provider_unavailable` | Back off. For create, retain the original idempotency key and body. | | `idempotency_in_progress` | Wait, then replay the same create rather than issuing a new one. | | `idempotency_outcome_unknown` or`sandbox_create_outcome_unknown` | Do not blind-retry. Retain the returned operation ID and reconcile. | | Validation or authentication error | Fix the request or credentials; retries cannot change the result. | ## Reconcile from project state [List sandboxes](https://wildflower.computer/docs/reference/list-sandboxes/) reads Wildflower's project registry without contacting a provider. Results are newest first and include deleted tombstones. Treat each status as cached at`statusObservedAt`; pass an opaque `nextCursor` back as`cursor` to continue. ## Retain response metadata ### X-Request-Id Keep this server-generated correlation ID with errors and support reports. ### Server-Timing Separates total API time, application time, and provider-adapter time when a provider call occurred. ### Idempotency-Replayed Identifies a successful response recovered from a prior create. ### SDK observers Generated clients expose response metadata without replacing their normal return values. > **Provider choice remains explicit** > > Wildflower does not fail over to another provider. A retry addresses the same adapter and logical operation; it never migrates sandbox state. See the [generated create reference](https://wildflower.computer/docs/reference/create-sandbox/)for the exact request and header types. --- title: "Start with the boundary that failed." description: "Diagnose Wildflower Computer authentication, provider profiles, sandbox IDs, file encodings, rate limits, uncertain creates, and documentation drift." canonical: "https://wildflower.computer/docs/troubleshooting/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Start with the boundary that failed. Wildflower separates API authentication, provider access, project registry state, and provider execution. Preserve the stable error code and request ID before changing anything; together they narrow the failure quickly. ## Capture one useful failure Keep the JSON error body plus correlation and timing headers. Never include the Wildflower bearer key, provider credential, command output, or file content in a support report. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ --dump-header /tmp/wildflower-headers.txt rg -i 'x-request-id|retry-after|server-timing' \ /tmp/wildflower-headers.txt ``` ## Common symptoms ### missing_api_key Confirm the `Authorization: Bearer …` header reaches the API. This is the Wildflower project key, not the provider key. ### provider_profile_not_found Connect the provider for this project or supply a typed inline provider credential and all required connection context. ### authentication_error The provider rejected its credential. Rotate or reconnect that provider profile; do not replace the Wildflower bearer key. ### invalid_sandbox_id / sandbox_not_found Use the opaque ID returned by create. IDs are project-scoped; a missing ID and another project's ID intentionally fail alike. ### invalid_file_content / file_not_utf8 Make `encoding` match the supplied content. Use`base64` for arbitrary bytes. ### rate_limited Honor `Retry-After`, add jitter, and reduce request or concurrency bursts. ### Uncertain create outcome Do not invent a new idempotency key. Retain the operation ID and inspect the project registry before operator reconciliation. ### Documentation source rejected Use a clean API checkout at exact `origin/main`, run`sdk:check`, then repeat the local website refresh. > **A command exit code is not an API error** > > A command that exits non-zero still returns a successful command result. Read `exitCode`, `stdout`, and`stderr` before treating the request as a transport failure. ## Generated error vocabulary These codes come from the same generated contract as the SDKs and reference pages: - `invalid_request`The request did not satisfy the endpoint contract.**Not retryable.** Correct the fields identified by the response message before sending the request again. - `payload_too_large`The request body or file content exceeded the supported size limit.**Not retryable.** Reduce the payload to the documented limit or split the work into smaller operations. - `request_timeout`Wildflower stopped waiting before the operation completed.**Retryable.** Retry with exponential backoff. For create operations, first reconcile using the operation ID because the provider may have succeeded. - `invalid_idempotency_key`The Idempotency-Key header was missing, malformed, or outside the supported length.**Not retryable.** Send a stable, non-secret key that follows the documented Idempotency-Key constraints. - `idempotency_conflict`The same idempotency key was reused with a different create request.**Not retryable.** Reuse the key only for the identical logical request, or generate a new key for changed input. - `idempotency_in_progress`An identical idempotent operation is still running.**Retryable.** Wait for the Retry-After interval and retry the same request with the same idempotency key. - `idempotency_outcome_unknown`Wildflower cannot safely determine whether a prior create reached the provider.**Not retryable.** Do not issue a blind create retry. Reconcile the operation ID with the sandbox registry or support. - `idempotency_unavailable`The idempotency store was temporarily unavailable.**Retryable.** Retry with exponential backoff and the same idempotency key. - `sandbox_registry_unavailable`The sandbox registry could not be read or updated.**Retryable.** Retry with exponential backoff. For create or delete, preserve identifiers and reconcile state before repeating the operation. - `sandbox_create_outcome_unknown`The provider create outcome could not be confirmed.**Not retryable.** Do not create again automatically. Use the operation ID to reconcile the provider and Wildflower registry. - `invalid_file_content`File content was not valid for the declared wire encoding.**Not retryable.** Encode the content as valid UTF-8 or base64 and make the encoding field match. - `file_not_utf8`The requested file contains bytes that cannot be returned as UTF-8.**Not retryable.** Read the file with base64 encoding instead. - `file_operation_failed`The provider could not complete the requested file operation.**Not retryable.** Verify that the path exists, is permitted, and is within provider limits before retrying. - `missing_api_key`No usable Wildflower or provider credential was supplied.**Not retryable.** Configure the required project API key and connect or supply the provider credential. - `provider_profiles_unavailable`Connected provider profiles could not be loaded.**Retryable.** Retry with exponential backoff; do not replace a stored profile unless the failure persists. - `provider_profile_not_found`The project has no connected profile for the requested provider.**Not retryable.** Connect that provider or supply a valid inline provider credential for the request. - `provider_operation_unavailable`A prior deep verification proved that the connected provider credential cannot perform the requested operation.**Not retryable.** Use the response operation, reason, and remediation fields to grant the missing permission, replace the credential, or choose a supported provider. - `invalid_sandbox_id`The sandbox ID is malformed or names a provider that does not match the route.**Not retryable.** Use the opaque sandbox ID returned by Wildflower without modifying it. - `provider_invalid_request`The selected provider rejected the normalized request as invalid.**Not retryable.** Correct provider-specific image, timeout, command, or connection settings before retrying. - `authentication_error`A Wildflower or upstream provider credential was rejected.**Not retryable.** Replace or reconnect the invalid credential, then retry the original operation. - `control_plane_conflict`The requested account or project mutation conflicts with current control-plane state.**Not retryable.** Refresh the current resource state and submit a mutation that satisfies its ownership and lifecycle rules. - `last_account_owner`The operation would leave an organization without an owner.**Not retryable.** Promote another member to owner before removing, demoting, or transferring the current owner. - `personal_account_immutable`The requested ownership or membership change is not allowed for a personal account.**Not retryable.** Use an organization account for shared ownership and membership changes. - `account_deleting`The account is already in its deletion lifecycle.**Not retryable.** Wait for deletion to finish and avoid starting new work in the account. - `sandbox_not_found`No sandbox visible to this project matches the supplied ID.**Not retryable.** Check the project and sandbox ID; a previously deleted sandbox cannot be restored through this endpoint. - `rate_limited`The request exceeded a Wildflower or provider rate limit.**Retryable.** Wait for Retry-After when present, then retry with exponential backoff and jitter. - `provider_unavailable`The selected provider or customer-owned bridge is temporarily unavailable.**Retryable.** Retry with exponential backoff or select another provider when workload portability permits. - `provider_error`The provider returned a failure that Wildflower could not classify more narrowly.**Not retryable.** Inspect the safe response message and operation ID; retry only when the provider condition is known to be transient. - `internal_error`Wildflower encountered an unexpected server-side failure.**Retryable.** Retry with exponential backoff and retain the request or operation ID for support if the failure repeats. - `legal_acceptance_required`The actor or account must accept the current legal release before continuing.**Not retryable.** Review and accept the required documents, then repeat the blocked operation. - `legal_release_changed`The legal release changed between review and acceptance.**Not retryable.** Fetch and review the new current release before submitting acceptance again. - `legal_not_found`The requested legal document or release does not exist.**Not retryable.** Refresh the legal manifest and use a published document and version. - `legal_unavailable`The legal publication or acceptance store is temporarily unavailable.**Retryable.** Retry with exponential backoff; do not assume acceptance was recorded unless it can be confirmed. - `invalid_email_webhook`The inbound email webhook signature or payload was invalid.**Not retryable.** Verify webhook signing configuration and send a payload that matches the documented provider event shape. When a code is unfamiliar, use the [generated API reference](https://wildflower.computer/docs/reference/) and include the response's`X-Request-Id` in the investigation. --- title: "Build a portable sandbox boundary." description: "Practical Wildflower Computer guides for migrating sandbox API calls and designing provider-portable create, get, runCommand, and delete lifecycles." canonical: "https://wildflower.computer/guides/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Build a portable sandbox boundary. These guides show how to adopt the shared lifecycle without pretending that provider-specific images, lifetimes, or existing sandbox state are interchangeable. ## Migration guides ### Migrate application calls from E2B Put the shared Wildflower Computer lifecycle around new E2B sandboxes, then make future provider choice explicit. - [Read the E2B migration guide](https://wildflower.computer/guides/migrate-from-e2b/) ### Migrate application calls from Daytona Keep container-image and TTL semantics visible while moving lifecycle calls behind the provider-neutral API. - [Read the Daytona migration guide](https://wildflower.computer/guides/migrate-from-daytona/) ### Design for provider portability Separate shared lifecycle logic from provider-specific creation policy and credentials. - [Read the provider portability guide](https://wildflower.computer/guides/provider-portability/) > **Calls can move. State does not.** — Portability boundary Provider selection applies to newly created sandboxes. --- title: "Keep Daytona behavior visible behind one lifecycle." description: "Migrate new Daytona sandbox lifecycle calls to Wildflower Computer while preserving container-image, TTL rounding, and combined-output behavior." canonical: "https://wildflower.computer/guides/migrate-from-daytona/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Keep Daytona behavior visible behind one lifecycle. This guide moves application-facing calls for newly created sandboxes. It does not transfer an existing Daytona sandbox or make provider-specific image and output behavior disappear. ## 1. Connect or supply the provider credential Continue using the customer's Daytona API key in the provider-credential boundary. It stays separate from the Wildflower Computer bearer key. Connect an encrypted project profile or supply an ephemeral inline override. ## 2. Create through the shared API Use `provider: "daytona"`. The image remains a container image; Wildflower Computer generates a one-line Dockerfile from it. Timeout seconds are rounded up to whole Daytona TTL minutes. The generated lifecycle below uses E2B as its concrete input. For Daytona, select `daytona` and set the container image and timeout described above; the client lifecycle remains generated. ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.create({ provider: "e2b", image: "base", timeout: 300, }); const handle = client.sandboxes.attach(sandbox.id); await handle.waitUntilReady(); const result = await handle.runCommand({ command: "echo hello", }); await handle.writeText("/tmp/hello.txt", "hello"); console.log(result.stdout, result.stderr, result.exitCode); await handle.delete(); ``` ## 3. Account for combined command output Daytona's synchronous command API returns combined output. Wildflower Computer places that content in `stdout` and returns an empty`stderr`. Do not write portable logic that assumes Daytona can separate the two streams. ## 4. Keep provider policy outside shared lifecycle code Container-image selection and TTL expectations belong in a Daytona-specific configuration object. Shared orchestration should retain create, get, runCommand, and delete plus normalized status and error handling. ## Verify the migration - Test the generated Dockerfile path with the intended container image. - Test timeout rounding around minute boundaries. - Confirm combined output is handled through stdout. - Delete every migration sandbox explicitly. ## Continue - [Daytona sandbox API support and limitations](https://wildflower.computer/providers/daytona/) - [Compare Daytona and Fly.io Sprites behavior](https://wildflower.computer/compare/daytona-vs-sprites/) - [Review all provider compatibility details](https://wildflower.computer/compatibility/) > **Container image + TTL minutes** — Daytona boundary The adapter preserves these semantics explicitly. --- title: "Put new E2B sandboxes behind one lifecycle." description: "Migrate new E2B sandbox lifecycle calls to the Wildflower Computer provider-neutral API without claiming automatic state transfer or failover." canonical: "https://wildflower.computer/guides/migrate-from-e2b/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Put new E2B sandboxes behind one lifecycle. This migration changes the application-facing API for newly created sandboxes. It does not import an existing E2B sandbox, copy its filesystem, or enable automatic failover. ## 1. Keep your E2B credential Wildflower Computer is BYOK. Continue using the customer's E2B API key, but keep it separate from the Wildflower Computer bearer key. Connect it once as a project profile or supply it as an ephemeral inline override. ## 2. Replace direct lifecycle calls Create through the shared API with `provider: "e2b"`. The image remains an E2B template ID and the timeout remains a lifetime in seconds. ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.create({ provider: "e2b", image: "base", timeout: 300, }); const handle = client.sandboxes.attach(sandbox.id); await handle.waitUntilReady(); const result = await handle.runCommand({ command: "echo hello", }); await handle.writeText("/tmp/hello.txt", "hello"); console.log(result.stdout, result.stderr, result.exitCode); await handle.delete(); ``` ## 3. Retain the normalized sandbox ID Later get, runCommand, and delete operations use the returned`wf_e2b_…` ID. The provider prefix routes those calls back to E2B. The provider-native identifier remains available in`metadata.nativeProviderId`. ## 4. Separate shared and provider-specific configuration Keep command execution and cleanup in shared code. Keep the E2B template ID, lifetime policy, and credential in provider-specific configuration so a future new sandbox can choose another supported adapter deliberately. ## Verify before changing provider choice - Confirm the template ID and default `base` behavior. - Confirm the 300-second default when timeout is omitted. - Verify stdout, stderr, and non-zero exit-code handling. - Delete every test sandbox explicitly. ## Continue - [E2B sandbox API support and limitations](https://wildflower.computer/providers/e2b/) - [Compare E2B and Daytona sandbox capabilities](https://wildflower.computer/compare/e2b-vs-daytona/) - [Design provider-portable creation policy](https://wildflower.computer/guides/provider-portability/) > **Application calls** — Migration scope Existing E2B sandbox IDs and state are not transferred. --- title: "Portable calls, explicit provider policy." description: "Design a provider-portable sandbox API integration by separating the shared lifecycle from provider-specific images, lifetimes, credentials, and routing context." canonical: "https://wildflower.computer/guides/provider-portability/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Portable calls, explicit provider policy. Wildflower Computer makes lifecycle code portable across supported adapters. It does not make provider-specific creation inputs or existing sandbox state interchangeable. ## Share the lifecycle Keep create, get, runCommand, and delete in one application-facing module. Handle normalized sandbox state, routeable IDs, command results, error codes, and request IDs there. ## Keep creation policy explicit Images and lifetimes do not mean the same thing everywhere. Model the provider choice as a discriminated policy rather than a bag of optional values. ```typescript type SandboxRoute = | { provider: "e2b"; image: string; timeout: number } | { provider: "daytona"; image: string; timeout: number } | { provider: "runloop"; image?: string; timeout?: number } | { provider: "sprites" } | { provider: "blaxel"; image?: string; timeout?: number; workspace: string; }; // Shared lifecycle code consumes an explicit route policy. const sandbox = await createSandbox(route); await executeWork(sandbox.id); await deleteSandbox(sandbox.id); ``` ## Keep credentials outside request bodies Inline provider credentials belong in `X-Provider-Api-Key`, separate from both the Wildflower Computer bearer key and JSON creation inputs. Connected project profiles avoid sending those secrets from application code. Inline Blaxel workspace context belongs in its generated connection header. ## Treat provider choice as immutable per sandbox A routeable ID identifies the selected provider and native sandbox. Do not reinterpret that ID for another adapter. To change provider, create a new sandbox and reconstruct only the state your application knows how to reproduce. ## Test the common denominator and the exceptions - Run the same create, get, runCommand, and delete contract for each adapter. - Test each provider's accepted and rejected creation inputs. - Verify stdout and stderr handling for each provider. - Exercise credential redaction and normalized error codes. - Keep deletion in a finally/defer path. ## Use the current evidence - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [Provider-specific support pages](https://wildflower.computer/providers/) - [Versioned OpenAPI contract](https://wildflower.computer/openapi/) - [Generated SDK language index](https://wildflower.computer/sdk/) > **Normalize operations, not differences** — Design principle Provider policy remains typed and visible. --- title: "The sandbox contract, directly crawlable." description: "Read and download the crawlable Wildflower Computer OpenAPI 0.8.0 contract, SDK model, JSON schemas, package versions, and shared lifecycle fixtures." canonical: "https://wildflower.computer/openapi/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # The sandbox contract, directly crawlable. OpenAPI 0.8.0 describes the Wildflower Computer API v1 surface. The generated SDK model, package-version schema, and shared contract fixtures are exposed alongside it. ## Download the contracts - [openapi.json](https://wildflower.computer/openapi.json) — OPENAPI — API paths, provider-specific create schemas, responses, and errors. - [sdk-model.json](https://wildflower.computer/contracts/sdk-model.json) — GENERATOR INPUT — Language-neutral SDK naming and typed provider metadata. - [sdk-model.schema.json](https://wildflower.computer/schemas/sdk-model.schema.json) — JSON SCHEMA — Validation schema for the SDK source model. - [package-versions.json](https://wildflower.computer/contracts/package-versions.json) — VERSIONS — Independent generated package versions by language. - [package-versions.schema.json](https://wildflower.computer/schemas/package-versions.schema.json) — JSON SCHEMA — Validation schema for generated package version declarations. - [benchmark-result.schema.json](https://wildflower.computer/schemas/benchmark-result.schema.json) — JSON SCHEMA — Validation schema for local, contextualized SDK latency results. - [live-benchmark-result.schema.json](https://wildflower.computer/schemas/live-benchmark-result.schema.json) — JSON SCHEMA — Validation schema for bounded live-provider SDK benchmark results. - [provider-observability.schema.json](https://wildflower.computer/schemas/provider-observability.schema.json) — JSON SCHEMA — Provider-specific authentication, latency, usage, and cost gaps. - [sandbox-operation-event-v2.schema.json](https://wildflower.computer/schemas/sandbox-operation-event-v2.schema.json) — JSON SCHEMA — Canonical operation timing, byte-count, outcome, and provenance event. - [sandbox-cost-snapshot-v2.schema.json](https://wildflower.computer/schemas/sandbox-cost-snapshot-v2.schema.json) — JSON SCHEMA — Current cost snapshot with a UUID event ID and immutable pricing basis. - [provider-benchmark-result-v1.schema.json](https://wildflower.computer/schemas/provider-benchmark-result-v1.schema.json) — JSON SCHEMA — Raw reproducible provider benchmark result contract. - [contract-fixtures.json](https://wildflower.computer/contracts/contract-fixtures.json) — FIXTURES — Shared lifecycle requests, responses, and error expectations. - [provider-billing-fixtures.json](https://wildflower.computer/contracts/provider-billing-fixtures.json) — FIXTURES — Provider-neutral normalization cases for scope, lag, currency, pagination, and conflicts. - [observability-vocabulary.json](https://wildflower.computer/contracts/observability-vocabulary.json) — VOCABULARY — Canonical event names, schema versions, measurements, operations, fidelity levels, metrics, and alert naming. - [source.json](https://wildflower.computer/contracts/source.json) — PROVENANCE — Exact source revision and SHA-256 for every mirrored contract file. ## Current API operations This directory is rendered directly from the synchronized OpenAPI document; adding, removing, or renaming an operation changes this page automatically. - **GET** `/healthz` — Check service health - **GET** `/metrics` — Get identifier-free API delivery metrics - **GET** `/openapi.json` — Get this OpenAPI document - **POST** `/v1/auth/google/intent` — Start Google sign-in - **POST** `/v1/auth/google` — Complete Google sign-in - **POST** `/v1/auth/session/refresh` — Rotate the browser session - **POST** `/v1/auth/logout` — Log out the browser session - **GET** `/v1/me` — Get the authenticated browser user - **DELETE** `/v1/me` — Delete the authenticated user - **GET** `/v1/accounts` — List accessible accounts - **POST** `/v1/accounts` — Create an organization - **GET** `/v1/accounts/{accountId}` — Get an accessible account - **PATCH** `/v1/accounts/{accountId}` — Update an account - **DELETE** `/v1/accounts/{accountId}` — Delete an organization - **GET** `/v1/accounts/{accountId}/members` — List account members - **PATCH** `/v1/accounts/{accountId}/members/{userId}` — Change an account member role - **DELETE** `/v1/accounts/{accountId}/members/{userId}` — Remove an account member - **POST** `/v1/accounts/{accountId}/leave` — Leave an organization - **GET** `/v1/accounts/{accountId}/projects` — List accessible projects in an account - **POST** `/v1/accounts/{accountId}/projects` — Create a project in an account - **GET** `/v1/accounts/{accountId}/invitations` — List pending organization invitations - **POST** `/v1/accounts/{accountId}/invitations` — Invite a person to an organization - **DELETE** `/v1/accounts/{accountId}/invitations/{invitationId}` — Revoke a pending organization invitation - **POST** `/v1/accounts/{accountId}/invitations/{invitationId}/resend` — Rotate and resend a pending organization invitation - **GET** `/v1/invitations` — List invitations matching the signed-in user's verified identities - **POST** `/v1/invitations/{invitationId}/accept` — Accept an organization invitation - **POST** `/v1/invitations/{invitationId}/decline` — Decline an organization invitation - **GET** `/v1/projects` — List owned projects - **POST** `/v1/projects/{projectId}/transfer` — Transfer a personal project to an organization - **GET** `/v1/projects/{projectId}/members` — List effective project members - **POST** `/v1/projects/{projectId}/members` — Add a project member - **PATCH** `/v1/projects/{projectId}/members/{userId}` — Change a project member role - **DELETE** `/v1/projects/{projectId}/members/{userId}` — Remove an explicit project member - **GET** `/v1/projects/{projectId}/api-keys` — List project API keys - **POST** `/v1/projects/{projectId}/api-keys` — Create a project API key - **DELETE** `/v1/projects/{projectId}/api-keys/{keyId}` — Revoke a project API key - **GET** `/v1/providers` — List provider capabilities - **GET** `/v1/provider-observability` — Get provider observability coverage - **GET** `/v1/provider-profiles` — List connected provider profiles - **POST** `/v1/provider-profiles/{provider}` — Connect or replace a provider profile - **DELETE** `/v1/provider-profiles/{provider}` — Disconnect a provider profile - **POST** `/v1/provider-profiles/{provider}/test` — Test stored profile resolution - **POST** `/v1/provider-profiles/{provider}/verify` — Deeply verify provider lifecycle permissions - **GET** `/v1/sandboxes` — List project sandboxes - **POST** `/v1/sandboxes` — Create a persistent running sandbox - **GET** `/v1/sandboxes/{id}` — Get a sandbox - **DELETE** `/v1/sandboxes/{id}` — Delete a sandbox - **POST** `/v1/sandboxes/{id}/exec` — Run a command in an existing sandbox - **POST** `/v1/sandboxes/{id}/files/read` — Read a file from an existing sandbox - **POST** `/v1/sandboxes/{id}/files/write` — Write a file in an existing sandbox - **GET** `/v1/sandboxes/{id}/usage` — Get transparent sandbox usage and cost fidelity - **GET** `/v1/legal/current` — Get the current legal release - **POST** `/v1/legal/acceptances` — Accept current legal documents - **POST** `/v1/legal/notifications/{notificationId}/seen` — Mark a legal notice as seen - **POST** `/v1/legal/consents` — Record or withdraw optional consent - **GET** `/v1/accounts/{accountId}/legal` — Get organization agreement state - **POST** `/v1/accounts/{accountId}/legal/agreements` — Accept the release for an organization - **POST** `/v1/webhooks/resend` — Receive a Resend delivery event ## Generation provenance The checked-in OpenAPI document and SDK model generate the TypeScript, Python, Rust, Go, Zig, and raw HTTP outputs. Each generated target records the API version, OpenAPI version, generator version, package version, and exact OpenAPI SHA-256. ## Human-readable context - [Understand the normalized sandbox API](https://wildflower.computer/sandbox-api/) - [Review tested provider compatibility](https://wildflower.computer/compatibility/) - [Explore generated SDK targets](https://wildflower.computer/sdk/) - [Read authentication and error concepts](https://wildflower.computer/docs/concepts/) - [Browse browser-session control-plane operations](https://wildflower.computer/docs/reference/control-plane/) > **SHA-256 7e4f085a…e81c4f** — Current provenance Wildflower source 788b7325. --- title: "Blaxel through one sandbox API." description: "Blaxel sandbox API support in Wildflower Computer: creation inputs, lifetime behavior, command output, limitations, and tested compatibility." canonical: "https://wildflower.computer/providers/blaxel/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Blaxel through one sandbox API. Persistent Blaxel sandboxes addressed through an API key and workspace. Wildflower Computer exposes it through the same persistent create, get, runCommand, and delete lifecycle used by every supported adapter. ## Current evidence The adapter has deterministic keyless lifecycle contract coverage. It has not completed a current private-staging credential smoke. ## Create a Blaxel sandbox Authenticate to Wildflower Computer with its bearer key and send yourBlaxel API key separately in `X-Provider-Api-Key`. The adapter also requires X-Provider-Workspace on every lifecycle request. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \ -H "X-Provider-Workspace: $BLAXEL_WORKSPACE" \ -H "Content-Type: application/json" \ --data '{ "provider": "blaxel", "image": "blaxel/base-image:latest", "timeout": 300}' ``` ## Capabilities and behavior | Concern | Current behavior | | --- | --- | | Image | The image is a Blaxel runtime image and defaults to blaxel/base-image:latest. | | Lifetime | An optional timeout in seconds is sent to Blaxel as the runtime TTL. | | Execution | The adapter returns the provider process stdout, stderr, and exit code through the shared execution result. | | Credential | Blaxel API key; resolved from a project profile or supplied as an ephemeral inline override. | ## Current limitations - Every create, get, runCommand, and delete request also needs the Blaxel workspace. - Wildflower Computer does not infer or store workspace routing context. - A Blaxel sandbox cannot be moved to another provider after creation. ## Tested compatibility The adapter tests pin the request and response shapes used by Wildflower Computer. These labels describe the tested upstream contract; callers do not select a provider API version. - [Blaxel sandbox lifecycle and process APIs, version 2026-04-28](https://docs.blaxel.ai/api-reference/compute/create-sandbox) ## Use a generated SDK Every generated client exposes the same lifecycle and typed provider creation inputs. The packages are generated from the versioned OpenAPI document and source model. - [Use the TypeScript SDK with Blaxel](https://wildflower.computer/sdk/typescript/) - [Use the Python SDK with Blaxel](https://wildflower.computer/sdk/python/) - [Use the Rust SDK with Blaxel](https://wildflower.computer/sdk/rust/) - [Use the Go SDK with Blaxel](https://wildflower.computer/sdk/go/) - [Use the Zig SDK with Blaxel](https://wildflower.computer/sdk/zig/) ## Continue - [Run the shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Review the full compatibility matrix](https://wildflower.computer/compatibility/) - [Inspect the OpenAPI request schemas](https://wildflower.computer/openapi/) > **Preview / contract-tested** — Evidence status Provider value: `blaxel` --- title: "Daytona through one sandbox API." description: "Daytona sandbox API support in Wildflower Computer: creation inputs, lifetime behavior, command output, limitations, and tested compatibility." canonical: "https://wildflower.computer/providers/daytona/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Daytona through one sandbox API. Persistent sandboxes created from a container image. Wildflower Computer exposes it through the same persistent create, get, runCommand, and delete lifecycle used by every supported adapter. ## Current evidence A connected encrypted profile completed create, idempotent replay, get, persistent commands, file write/read, list, delete, and deletion confirmation on private staging on July 28, 2026. ## Create a Daytona sandbox Authenticate to Wildflower Computer with its bearer key and send yourDaytona API key separately in `X-Provider-Api-Key`. No additional provider routing header is required. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "daytona", "image": "ubuntu:22.04", "timeout": 300}' ``` ## Capabilities and behavior | Concern | Current behavior | | --- | --- | | Image | The image field is a container image. The adapter generates a one-line Dockerfile using that image. | | Lifetime | The API accepts seconds and the adapter rounds them up to whole Daytona TTL minutes. | | Execution | Daytona returns combined command output. The adapter places it in stdout and returns an empty stderr. | | Credential | Daytona API key; resolved from a project profile or supplied as an ephemeral inline override. | ## Current limitations - Timeout precision is one minute after adapter rounding. - Standard output and standard error are not separable in the synchronous Daytona command response. - The sandbox remains attached to Daytona for its complete lifecycle. ## Tested compatibility The adapter tests pin the request and response shapes used by Wildflower Computer. These labels describe the tested upstream contract; callers do not select a provider API version. - [Daytona platform OpenAPI 1.0 contract](https://www.daytona.io/docs/openapi.json) - [Daytona toolbox OpenAPI contract](https://www.daytona.io/docs/toolbox-openapi.json) ## Use a generated SDK Every generated client exposes the same lifecycle and typed provider creation inputs. The packages are generated from the versioned OpenAPI document and source model. - [Use the TypeScript SDK with Daytona](https://wildflower.computer/sdk/typescript/) - [Use the Python SDK with Daytona](https://wildflower.computer/sdk/python/) - [Use the Rust SDK with Daytona](https://wildflower.computer/sdk/rust/) - [Use the Go SDK with Daytona](https://wildflower.computer/sdk/go/) - [Use the Zig SDK with Daytona](https://wildflower.computer/sdk/zig/) ## Compare Daytona - [E2B vs Daytona sandbox APIs](https://wildflower.computer/compare/e2b-vs-daytona/) - [Daytona vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/daytona-vs-sprites/) ## Continue - [Run the shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Review the full compatibility matrix](https://wildflower.computer/compatibility/) - [Inspect the OpenAPI request schemas](https://wildflower.computer/openapi/) > **Launch tier / live-proven** — Evidence status Provider value: `daytona` --- title: "E2B through one sandbox API." description: "E2B sandbox API support in Wildflower Computer: creation inputs, lifetime behavior, command output, limitations, and tested compatibility." canonical: "https://wildflower.computer/providers/e2b/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # E2B through one sandbox API. Persistent sandboxes created from an E2B template. Wildflower Computer exposes it through the same persistent create, get, runCommand, and delete lifecycle used by every supported adapter. ## Current evidence The adapter has deterministic keyless lifecycle contract coverage. It has not completed a current private-staging credential smoke. ## Create a E2B sandbox Authenticate to Wildflower Computer with its bearer key and send yourE2B API key separately in `X-Provider-Api-Key`. No additional provider routing header is required. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "e2b", "image": "base", "timeout": 300}' ``` ## Capabilities and behavior | Concern | Current behavior | | --- | --- | | Image | The image field is interpreted as an E2B template ID. It defaults to base when omitted. | | Lifetime | The timeout is a sandbox lifetime in seconds and defaults to 300 when omitted. | | Execution | The adapter preserves separate stdout and stderr streams and returns the command exit code. | | Credential | E2B API key; resolved from a project profile or supplied as an ephemeral inline override. | ## Current limitations - The image value is a template ID, not a general container image. - The sandbox remains attached to E2B for its complete lifecycle. - Wildflower Computer does not migrate E2B filesystem state to another provider. ## Tested compatibility The adapter tests pin the request and response shapes used by Wildflower Computer. These labels describe the tested upstream contract; callers do not select a provider API version. - [E2B management OpenAPI 0.1.0 contract](https://github.com/e2b-dev/E2B/blob/main/spec/openapi.yml) ## Use a generated SDK Every generated client exposes the same lifecycle and typed provider creation inputs. The packages are generated from the versioned OpenAPI document and source model. - [Use the TypeScript SDK with E2B](https://wildflower.computer/sdk/typescript/) - [Use the Python SDK with E2B](https://wildflower.computer/sdk/python/) - [Use the Rust SDK with E2B](https://wildflower.computer/sdk/rust/) - [Use the Go SDK with E2B](https://wildflower.computer/sdk/go/) - [Use the Zig SDK with E2B](https://wildflower.computer/sdk/zig/) ## Compare E2B - [E2B vs Daytona sandbox APIs](https://wildflower.computer/compare/e2b-vs-daytona/) - [E2B vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/e2b-vs-sprites/) ## Continue - [Run the shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Review the full compatibility matrix](https://wildflower.computer/compatibility/) - [Inspect the OpenAPI request schemas](https://wildflower.computer/openapi/) > **Preview / contract-tested** — Evidence status Provider value: `e2b` --- title: "Choose the sandbox provider per sandbox." description: "Explore 5 detailed Wildflower Computer provider guides and the current contract covering 12 supported sandbox backends." canonical: "https://wildflower.computer/providers/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Choose the sandbox provider per sandbox. Wildflower Computer supports 12 provider adapters today. This directory contains detailed guides for 5 of them; the generated capability reference is the source of truth for all 12. - [Open compatibility matrix](https://wildflower.computer/compatibility/) - [Compare provider behavior](https://wildflower.computer/compare/) - [Review provider pricing](https://wildflower.computer/providers/pricing/) - [View provider rankings](https://wildflower.computer/rankings/) ## Featured provider guides Preview / contract-tested / `blaxel` ### Blaxel Persistent Blaxel sandboxes addressed through an API key and workspace. ImageRuntime image supported LifetimeTimeout sent as runtime TTL OutputSeparate stdout and stderr - [Read Blaxel sandbox API support](https://wildflower.computer/providers/blaxel/) Preview / contract-tested / `e2b` ### E2B Persistent sandboxes created from an E2B template. ImageTemplate ID supported LifetimeTimeout in seconds OutputSeparate stdout and stderr - [Read E2B sandbox API support](https://wildflower.computer/providers/e2b/) Launch tier / live-proven / `daytona` ### Daytona Persistent sandboxes created from a container image. ImageContainer image supported LifetimeRounded up to TTL minutes OutputCombined output in stdout - [Read Daytona sandbox API support](https://wildflower.computer/providers/daytona/) Preview / contract-tested / `runloop` ### Runloop Persistent Runloop Devboxes created from an optional Blueprint. ImageBlueprint name supported LifetimeMaximum 172800 seconds OutputSeparate stdout and stderr - [Read Runloop sandbox API support](https://wildflower.computer/providers/runloop/) Launch tier / live-proven / `sprites` ### Fly.io Sprites Persistent Sprites with a fixed environment and automatic sleep. ImageFixed environment LifetimeNo timeout option OutputSeparate stdout and stderr - [Read Fly.io Sprites sandbox API support](https://wildflower.computer/providers/sprites/) ## All providers in the current contract The OpenAPI 0.8.0 provider enum covers AWS AgentCore, Blaxel, ASCII Box, Cloudflare Sandbox, E2B, Novita Agent Sandbox, Daytona, Modal, Runloop, Smol Machines, Fly.io Sprites, and Vercel Sandbox. See the [generated provider reference](https://wildflower.computer/docs/reference/#providers) for exact create inputs and connection context. [`GET /v1/providers`](https://wildflower.computer/docs/reference/list-providers/)returns each stable provider ID, display name, normalized published price, and capabilities. The [provider pricing reference](https://wildflower.computer/providers/pricing/)adds the complete published-rate calculation and official sources while keeping billing caveats visible instead of presenting the result as an invoice forecast. Daytona and Fly.io Sprites are the initial launch tier because both have a current full lifecycle smoke on private staging. AWS AgentCore, Blaxel, Cloudflare Sandbox, E2B, Modal, Runloop, and Vercel Sandbox remain preview adapters with deterministic keyless contract coverage, not current live credential proof. ## What “supported” means Each provider shown here has an adapter in the current API, provider-contract fixtures, normalized lifecycle behavior, and generated SDK inputs. Support does not mean that every provider behaves identically or that Wildflower Computer retries an operation elsewhere. ## Choose based on visible behavior - [Compare E2B and Daytona sandbox capabilities](https://wildflower.computer/compare/e2b-vs-daytona/) - [Compare E2B and Fly.io Sprites behavior](https://wildflower.computer/compare/e2b-vs-sprites/) - [Compare Daytona and Fly.io Sprites behavior](https://wildflower.computer/compare/daytona-vs-sprites/) - [Plan a provider-portable integration](https://wildflower.computer/guides/provider-portability/) > **Explicit at creation** — Routing rule Existing sandboxes do not fail over or migrate between provider adapters. --- title: "Published rates, one explicit profile." description: "Compare current sandbox provider pricing from official sources, normalized to one fully busy vCPU and 2 GiB of memory for one hour." canonical: "https://wildflower.computer/providers/pricing/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Published rates, one explicit profile. We captured official pricing for 12 sandbox providers and normalized the published unit rates to one fully busy vCPU plus 2 GiB of memory for one hour. 12 are in the current Wildflower Computer API contract. - [Download machine-readable pricing](https://wildflower.computer/provider-pricing.json) - [Inspect the catalog API](https://wildflower.computer/docs/reference/list-providers/) - [Review provider compatibility](https://wildflower.computer/compatibility/) - [Review usage and cost fidelity](https://wildflower.computer/docs/provider-observability/) > **A normalization, not an invoice forecast** > > This normalization is not an invoice forecast. A null amount means comparable public unit rates are unavailable; billing bases, selectable configurations, subscriptions, credits, storage, network, regions, and idle behavior differ. > > Per-sandbox `providerReported` and`invoiceReconciled` amounts remain separate and explicitly unavailable unless Wildflower integrates an authoritative provider signal. See the [provider-by-provider coverage matrix](https://wildflower.computer/docs/provider-observability/), including Modal’s aggregate-only reporting gap and Smol’s unavailable normalized estimate. ## Use the catalog from code [`GET /v1/providers`](https://wildflower.computer/docs/reference/list-providers/)and each generated SDK’s `client.providers.list()` method return the comparison profile plus every provider’s stable `provider` ID,`displayName`, normalized `pricing`, and runtime capabilities. Use this endpoint for application decisions; the downloadable JSON below retains the fuller published-rate calculation and source list for review. A sandbox created today retains this evidence snapshot for its future usage estimates. Refreshing the catalog changes new decisions, not historical estimates; old registry rows without a snapshot are labeled`current_catalog_fallback`. ## Providers in the current API contract These rows follow contract order, not price order. “Busy hour” means 100% CPU utilization for the entire hour; providers that bill actual consumption can cost less when idle or suspended. | Provider | Normalized busy hour | Published billing basis | Important caveat | | --- | --- | --- | --- | | AWS AgentCore | **$0.108400**1 vCPU + 2 GiBCPU $0.089500 + memory $0.018900 | Active CPU and peak memory consumption | The estimate assumes one fully busy vCPU and 2 GiB of peak memory. AgentCore Code Interpreter exposes fixed session hardware and bills actual consumption, including system overhead. | | Blaxel | **$0.082800**1 vCPU + 2 GiB | Active time by allocated memory | CPU is not billed separately. The estimate uses Blaxel's documented example in which 8 GB of memory receives 4 CPU cores; suspended time and snapshot storage are separate. | | ASCII Box | **$0.009000**1 vCPU + 2 GiB | Fixed VM time billed by the second | Box sells a fixed 4 vCPU / 8 GB VM bundle with an account minimum. The estimate divides the included VM time by four vCPUs; it is not the price of a separately selectable 1 vCPU machine. | | Cloudflare Sandbox | **$0.090000**1 vCPU + 2 GiBCPU $0.072000 + memory $0.018000 | Active CPU and provisioned memory | This is a unit-rate estimate. Cloudflare's selectable 1 vCPU container currently includes 6 GiB, and Workers, Durable Objects, disk, logs, and included allowances are outside this number. | | E2B | **$0.082800**1 vCPU + 2 GiBCPU $0.050400 + memory $0.032400 | Allocated resources while running | Usage is billed per running second. Subscription charges, included credits, concurrency, storage, and plan-dependent custom-resource access are separate. | | Novita Agent Sandbox | **$0.058320**1 vCPU + 2 GiBCPU $0.035280 + memory $0.023040 | Allocated resources while running | The estimate excludes storage, free credits, concurrency limits, and session-length differences between free and paid access. | | Daytona | **$0.082800**1 vCPU + 2 GiBCPU $0.050400 + memory $0.032400 | Reserved resources while running | The estimate excludes disk and free credits. Daytona bills reserved CPU and memory during started and transitional lifecycle states. | | Modal | **$0.118980**1 vCPU + 2 GiBCPU $0.070956 + memory $0.048024 | Higher of requested or actual resources | Modal prices physical cores, where one physical core equals two vCPUs. The estimate therefore uses 0.5 physical core plus 2 GiB of memory. | | Runloop | **$0.158400**1 vCPU + 2 GiBCPU $0.108000 + memory $0.050400 | Devbox CPU and memory consumption | The estimate covers published Devbox CPU and memory usage only. Storage, Blueprint builds, Axons, credits, and subscription features are separate. | | Smol Machines | **Not publicly comparable**1 vCPU + 2 GiB | Cloud machine compute, storage, and egress usage | Smol Cloud documents metered usage and per-machine cost reporting, but does not publish comparable CPU or memory unit rates. The normalized busy-hour estimate is therefore unavailable. | | Fly.io Sprites | **$0.157500**1 vCPU + 2 GiBCPU $0.070000 + memory $0.087500 | Actual CPU and memory usage | Sprites dynamically manages resources. The estimate assumes a continuously busy vCPU and 2 GiB of actual memory for the complete hour; storage and plan charges are separate. | | Vercel Sandbox | **$0.170400**1 vCPU + 2 GiBCPU $0.128000 + memory $0.042400 | Active CPU and provisioned memory | The estimate assumes a fully active CPU for one hour. Included usage, plan charges, creation, network, snapshots, and regional or enterprise pricing are separate. | ## What the calculation includes - One vCPU-equivalent at 100% utilization for 3,600 seconds. - Two GiB of memory for the same complete hour. - Only rates that the provider publishes on the cited official pages. Storage, network, snapshots, logs, subscription fees, included credits, regional differences, minimum configurations, and provider-specific idle behavior remain outside the normalized number unless a provider’s bundle makes them inseparable. Each row preserves the relevant exception. ## Official sources ### AWS AgentCore - [Official AWS AgentCore source](https://aws.amazon.com/bedrock/agentcore/pricing/)`sha256:1803ab76c6da` ### Blaxel - [Official Blaxel source 1](https://blaxel.ai/pricing)`sha256:228fed8f4992` - [Official Blaxel source 2](https://docs.blaxel.ai/Sandboxes/Overview)`sha256:374d80335c2e` ### ASCII Box - [Official ASCII Box source](https://box.ascii.dev/)`sha256:857323d2d348` ### Cloudflare Sandbox - [Official Cloudflare Sandbox source](https://developers.cloudflare.com/containers/pricing/)`sha256:11dcfb682fb6` ### E2B - [Official E2B source](https://e2b.dev/pricing)`sha256:73ae7183b152` ### Novita Agent Sandbox - [Official Novita Agent Sandbox source](https://novita.ai/sandbox)`sha256:1592fc1ae766` ### Daytona - [Official Daytona source 1](https://www.daytona.io/)`sha256:5f3f68151b43` - [Official Daytona source 2](https://www.daytona.io/docs/billing)`sha256:4787e91c7ce4` ### Modal - [Official Modal source 1](https://modal.com/products/sandboxes)`sha256:bf504fc2d3d9` - [Official Modal source 2](https://modal.com/docs/guide/sandbox-resources)`sha256:c73552b2085b` ### Runloop - [Official Runloop source](https://runloop.ai/pricing)`sha256:392f60bfb478` ### Smol Machines - [Official Smol Machines source](https://smolmachines.com/docs/cloud-api)`sha256:ba470fc7ad32` ### Fly.io Sprites - [Official Fly.io Sprites source](https://fly.io/sprites)`sha256:62bf1f6449ba` ### Vercel Sandbox - [Official Vercel Sandbox source](https://vercel.com/pricing)`sha256:8cf0ec572241` ## Refresh and review Run `corepack pnpm pricing:refresh` in the API repository to capture official pages and fail closed if an expected pricing statement moves. After that change lands, run `pnpm docs:refresh` here to synchronize the exact API-owned data into this page and [the public JSON artifact](https://wildflower.computer/provider-pricing.json), then run the full website gate. Neither command commits, pushes, deploys, or schedules itself. > **2026-07-28** — Source capture Every value is extracted from a configured official page and pinned by SHA-256 in the API repository’s source snapshot. --- title: "Runloop through one sandbox API." description: "Runloop sandbox API support in Wildflower Computer: creation inputs, lifetime behavior, command output, limitations, and tested compatibility." canonical: "https://wildflower.computer/providers/runloop/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Runloop through one sandbox API. Persistent Runloop Devboxes created from an optional Blueprint. Wildflower Computer exposes it through the same persistent create, get, runCommand, and delete lifecycle used by every supported adapter. ## Current evidence The adapter has deterministic keyless lifecycle contract coverage. It has not completed a current private-staging credential smoke. ## Create a Runloop sandbox Authenticate to Wildflower Computer with its bearer key and send yourRunloop API key separately in `X-Provider-Api-Key`. No additional provider routing header is required. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "runloop", "image": "my-blueprint", "timeout": 300}' ``` ## Capabilities and behavior | Concern | Current behavior | | --- | --- | | Image | The image field is interpreted as a Runloop Blueprint name. The default starter image is used when omitted. | | Lifetime | The timeout becomes the Devbox maximum lifetime and cannot exceed 172800 seconds. | | Execution | The adapter waits for command completion and returns stdout, stderr, and the exit status. Truncated output is reported as an error. | | Credential | Runloop API key; resolved from a project profile or supplied as an ephemeral inline override. | ## Current limitations - The timeout cannot exceed 172800 seconds. - Truncated Runloop command output fails closed instead of returning a partial normalized result. - Delete permanently shuts down the selected Devbox. ## Tested compatibility The adapter tests pin the request and response shapes used by Wildflower Computer. These labels describe the tested upstream contract; callers do not select a provider API version. - [Runloop published OpenAPI 0.1 contract](https://docs.runloop.ai/openapi-specs/stainless-processed-openapi.json) ## Use a generated SDK Every generated client exposes the same lifecycle and typed provider creation inputs. The packages are generated from the versioned OpenAPI document and source model. - [Use the TypeScript SDK with Runloop](https://wildflower.computer/sdk/typescript/) - [Use the Python SDK with Runloop](https://wildflower.computer/sdk/python/) - [Use the Rust SDK with Runloop](https://wildflower.computer/sdk/rust/) - [Use the Go SDK with Runloop](https://wildflower.computer/sdk/go/) - [Use the Zig SDK with Runloop](https://wildflower.computer/sdk/zig/) ## Continue - [Run the shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Review the full compatibility matrix](https://wildflower.computer/compatibility/) - [Inspect the OpenAPI request schemas](https://wildflower.computer/openapi/) > **Preview / contract-tested** — Evidence status Provider value: `runloop` --- title: "Fly.io Sprites through one sandbox API." description: "Fly.io Sprites sandbox API support in Wildflower Computer: creation inputs, lifetime behavior, command output, limitations, and tested compatibility." canonical: "https://wildflower.computer/providers/sprites/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Fly.io Sprites through one sandbox API. Persistent Sprites with a fixed environment and automatic sleep. Wildflower Computer exposes it through the same persistent create, get, runCommand, and delete lifecycle used by every supported adapter. ## Current evidence An inline credential completed create, idempotent replay, get, persistent commands, file write/read, list, delete, and deletion confirmation on private staging on July 28, 2026. ## Create a Fly.io Sprites sandbox Authenticate to Wildflower Computer with its bearer key and send yourFly.io Sprites API token separately in `X-Provider-Api-Key`. No additional provider routing header is required. ```bash curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \ -H "Authorization: Bearer $WILDFLOWER_API_KEY" \ -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "provider": "sprites"}' ``` ## Capabilities and behavior | Concern | Current behavior | | --- | --- | | Image | Sprites uses a fixed environment. The adapter rejects image rather than silently ignoring it. | | Lifetime | Sprites automatically sleeps and persists until deletion. The adapter rejects timeout. | | Execution | The adapter preserves separate stdout and stderr frames and returns the command exit code. | | Credential | Fly.io Sprites API token; resolved from a project profile or supplied as an ephemeral inline override. | ## Current limitations - Image selection is not supported by the current adapter. - A sandbox lifetime timeout is not supported by the current adapter. - A cold Sprite can initially report stopped and wakes on its first command. ## Tested compatibility The adapter tests pin the request and response shapes used by Wildflower Computer. These labels describe the tested upstream contract; callers do not select a provider API version. - [Fly.io Sprites development API](https://docs.sprites.dev/api/dev-latest/) ## Use a generated SDK Every generated client exposes the same lifecycle and typed provider creation inputs. The packages are generated from the versioned OpenAPI document and source model. - [Use the TypeScript SDK with Fly.io Sprites](https://wildflower.computer/sdk/typescript/) - [Use the Python SDK with Fly.io Sprites](https://wildflower.computer/sdk/python/) - [Use the Rust SDK with Fly.io Sprites](https://wildflower.computer/sdk/rust/) - [Use the Go SDK with Fly.io Sprites](https://wildflower.computer/sdk/go/) - [Use the Zig SDK with Fly.io Sprites](https://wildflower.computer/sdk/zig/) ## Compare Fly.io Sprites - [E2B vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/e2b-vs-sprites/) - [Daytona vs Fly.io Sprites sandbox APIs](https://wildflower.computer/compare/daytona-vs-sprites/) ## Continue - [Run the shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Review the full compatibility matrix](https://wildflower.computer/compatibility/) - [Inspect the OpenAPI request schemas](https://wildflower.computer/openapi/) > **Launch tier / live-proven** — Evidence status Provider value: `sprites` --- title: "What developers used—not a quality score." description: "Seven-day Wildflower Computer sandbox provider usage rankings with exact sample counts, UTC windows, and descriptive—not quality-scored—outcomes." canonical: "https://wildflower.computer/rankings/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # What developers used—not a quality score. A seven-day view of completed UTC days, ranked by observed create volume. Success and latency are descriptive for Wildflower traffic; they are not controlled provider benchmarks. - [Download the ranking snapshot](https://wildflower.computer/provider-rankings.json) - [Compare published pricing](https://wildflower.computer/providers/pricing/) Snapshot withheld ## Not enough verified traffic yet. The publication pipeline is ready, but showing empty or invented provider rows would be misleading. The first snapshot will appear only after a complete seven-day UTC window contains at least 100 observed create operations and passes the local redaction and denominator checks. ## How to read this ranking 01 / rank ### Observed create volume Rank and share use only sandbox create operations observed by Wildflower Computer during the stated window. 02 / outcomes ### Descriptive, not causal Success reflects this traffic mix. It does not control image, region, account configuration, workload, or provider plan. 03 / latency ### Successful provider samples p50 and p95 include only successful creates where provider latency was observed. Missing samples render as an em dash, never zero. ## Publication and privacy The checked-in snapshot can contain only provider-level rank, counts, percentages, latency percentiles, UTC window timestamps, methodology, and source revision. The importer rejects unknown fields and never accepts account, project, request, machine, credential, command, file, path, payload, sandbox, or user identity data. ## Pricing and controlled comparisons stay separate Provider pricing comes from [reviewed official pricing sources](https://wildflower.computer/providers/pricing/). Controlled performance comparisons require the same workload, region, benchmark version, time window, and visible sample count. Neither is mixed into this observed usage rank. > **Awaiting traffic** — Publication state No ranking is shown before 100 verified creates. --- title: "Runbooks humans and coding agents can follow." description: "Browse 22 public-safe Wildflower Computer runbooks for local CI, documentation, SDK generation, deploys, incidents, recovery, providers, email, and legal releases." canonical: "https://wildflower.computer/runbooks/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Runbooks humans and coding agents can follow. Every procedure carries status, audience, risk, verification date, and repository sources of truth. Exact scripts and configuration remain authoritative. ## Operating boundary These Markdown files are intentionally safe to track and publish. They may name public hosts and environment-variable names, but never contain credentials, customer data, private incidents, or copied secret-bearing output. Agents can read individual Markdown files or consume the complete [plain-text runbook corpus](https://wildflower.computer/llms-ops.txt). ## Runbook directory - [Documentation refresh](https://github.com/dnosk/wildflower-web/blob/main/runbooks/documentation-refresh.md) — Website repository / Active / Medium risk — API, SDK, and website maintainers and coding agents - [Website deploy](https://github.com/dnosk/wildflower-web/blob/main/runbooks/website-deploy.md) — Website repository / Active / High risk — Website release operators and maintainers - [Alerting and incident routing](https://wildflower.computer/runbooks/alerting.md) — API repository / Active / High risk — Reliability and release operators - [API deploy](https://wildflower.computer/runbooks/api-deploy.md) — API repository / Active / High risk — Release operators and maintainers - [CLI release preparation](https://wildflower.computer/runbooks/cli-release.md) — API repository / Boundary / High risk — Wildflower CLI release operators and maintainers - [ClickHouse operations and recovery](https://wildflower.computer/runbooks/clickhouse.md) — API repository / Active / High risk — Telemetry, database, and release operators - [Outside-Fly dead-man monitoring](https://wildflower.computer/runbooks/deadman.md) — API repository / Active / High risk — Reliability and release operators - [Documentation synchronization](https://wildflower.computer/runbooks/documentation-sync.md) — API repository / Active / Medium risk — API, SDK, and documentation maintainers and coding agents - [Email delivery](https://wildflower.computer/runbooks/email-delivery.md) — API repository / Active / High risk — Product, API, and release operators - [Incident response](https://wildflower.computer/runbooks/incident-response.md) — API repository / Active / High risk — Reliability, security, database, and release operators - [Legal release](https://wildflower.computer/runbooks/legal-release.md) — API repository / Active / High risk — Legal, product, and release operators - [Local development and CI](https://wildflower.computer/runbooks/local-development-and-ci.md) — API repository / Active / Low risk — Contributors, maintainers, and coding agents - [Operator observatory](https://wildflower.computer/runbooks/operator-observatory.md) — API repository / Active / High risk — Platform operators and security maintainers - [PostgreSQL operations and recovery](https://wildflower.computer/runbooks/postgres.md) — API repository / Active / High risk — Database and release operators - [Provider outage and ambiguous create recovery](https://wildflower.computer/runbooks/provider-outage.md) — API repository / Active / High risk — API, provider, support, and incident operators - [Provider pricing refresh](https://wildflower.computer/runbooks/provider-pricing.md) — API repository / Active / Medium risk — Provider, API, and documentation maintainers - [Provider validation](https://wildflower.computer/runbooks/provider-validation.md) — API repository / Active / High risk — Provider-adapter and SDK maintainers - [Cross-repository release coordination](https://wildflower.computer/runbooks/release-coordination.md) — API repository / Active / High risk — API, SDK, documentation, website, and release maintainers - [SDK generation](https://wildflower.computer/runbooks/sdk-generation.md) — API repository / Active / Medium risk — API and SDK contributors, maintainers, and coding agents - [SDK release preparation](https://wildflower.computer/runbooks/sdk-release.md) — API repository / Boundary / Medium risk — SDK release operators - [Secret rotation](https://wildflower.computer/runbooks/secret-rotation.md) — API repository / Active / High risk — Security, database, reliability, and release operators - [Staging release rehearsal](https://wildflower.computer/runbooks/staging-release-rehearsal.md) — API repository / Active / High risk — Release operators > **22 runbooks** — Current inventory 20 API and 2 website procedures. --- title: "One lifecycle for persistent sandboxes." description: "Learn how the Wildflower Computer provider-neutral sandbox API creates, gets, executes in, and deletes persistent sandboxes using customer-owned provider credentials." canonical: "https://wildflower.computer/sandbox-api/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # 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 Machines, Fly.io Sprites, and Vercel Sandbox. - [Run the quickstart](https://wildflower.computer/docs/getting-started/) - [Read the OpenAPI contract](https://wildflower.computer/openapi/) ## 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. `GET /v1/provider-observability` adds the provider-by-provider authentication, latency, usage, billing-signal, required-access, and missing-detail matrix. `GET /v1/sandboxes/{id}/usage` returns a transparent normalized list-price estimate while keeping provider-reported and invoice-reconciled amounts separate. New sandboxes pin their pricing evidence at creation; legacy rows explicitly identify when they fall back to the current catalog. ## 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. ```bash export WILDFLOWER_URL="http://localhost:8080" export 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 ` 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](https://wildflower.computer/compatibility/). ## Current limitations - No automatic failover or migration between providers. - No hosted secret manager beyond project-scoped provider profiles. - No provider resale, customer invoicing, balance collection, or marketplace. Published prices and estimates remain informational. - No AI model execution or completed agent runtime. ## Continue with the contract - [Explore supported sandbox providers](https://wildflower.computer/providers/) - [Choose a generated sandbox SDK](https://wildflower.computer/sdk/) - [Design for provider portability](https://wildflower.computer/guides/provider-portability/) - [Download the crawlable OpenAPI document](https://wildflower.computer/openapi/) > **API v1 / OpenAPI 0.8.0** — Current contract 12 provider adapters, typed discovery, and persistent lifecycle operations. --- title: "Go sandbox SDK." description: "Generated context-aware Go sandbox SDK with typed provider inputs and injectable HTTP clients. Review authentication, compatibility, and package provenance." canonical: "https://wildflower.computer/sdk/go/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Go sandbox SDK. Generated context-aware Go sandbox SDK with typed provider inputs and injectable HTTP clients. The generated client is version 0.8.0 and calls the Wildflower Computer API v1 contract. ## Create, execute, and delete This example uses E2B to make the provider input concrete. The generated client also includes typed creation inputs for the other providers in the 12-adapter OpenAPI contract. ```go client, err := wildflower.NewClient(os.Getenv("WILDFLOWER_API_KEY")) if err != nil { return err } sandbox, err := client.Sandboxes.Create( ctx, wildflower.E2BCreateSandboxInput{}, ) if err != nil { return err } handle, err := client.Sandboxes.Attach(sandbox.ID) if err != nil { return err } _, err = handle.WaitUntilReady(ctx, wildflower.WaitForStatusOptions{ PollInterval: 250 * time.Millisecond, Timeout: 30 * time.Second, }) if err != nil { return err } result, err := handle.RunCommand( ctx, wildflower.RunCommandInput{Command: "echo hello"}, ) if err != nil { return err } fmt.Println(result.Stdout) _, err = handle.Delete(ctx) return err ``` ## Authentication model The Wildflower Computer API key authenticates the application. The selected provider credential is resolved from a connected project profile or sent as an inline override. Inline secrets are carried in headers and never serialized into the JSON request body. A fresh process can use the same connected project profile. Inline mode requires the credential again; provider-specific connection context remains typed separately. ## Error model API failures expose stable error codes, HTTP status, an optional provider, and the response `X-Request-Id`. A command with a non-zero exit code is a successful execution result, not an API failure. ## Generated package provenance | Package version | `0.8.0` | | --- | --- | | API version | `v1` | | OpenAPI version | `0.8.0` | | Generator version | `0.7.0` | | OpenAPI SHA-256 | `7e4f085adbee5ae5e63941b3286eebbbc90d2185735f5ac2b0a1093432e81c4f` | | Source revision | `788b7325a454b8b753a7d614247d5694bad5c967` | ## Availability Distribution status: **source-only**. The generated package exists in the API source repository and its local release-candidate pipeline. This page does not claim registry publication while the generated status remains source-only. ## Continue - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and normalized error concepts](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) > **github.com/dnosk/wildflower/sdks/go** — Generated package Go 1.26 or newer · Context-aware synchronous methods --- title: "5 languages. One sandbox contract." description: "Explore 5 generated Wildflower Computer sandbox SDKs for TypeScript, Python, Rust, Go, and Zig, all derived from the same OpenAPI lifecycle contract." canonical: "https://wildflower.computer/sdk/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # 5 languages. One sandbox contract. Wildflower Computer provides generated clients for TypeScript, Python, Rust, Go, and Zig. Each client calls the same HTTP API and records exact OpenAPI and generator provenance. ## Generated SDK targets - [TypeScript](https://wildflower.computer/sdk/typescript/) — 01 — `@wildflowercomputer/sdk` — Generated TypeScript sandbox SDK with typed provider inputs and the complete shared lifecycle. - [Python](https://wildflower.computer/sdk/python/) — 02 — `wildflower-computer` — Generated Python sandbox SDK with synchronous and async clients over the complete shared lifecycle. - [Rust](https://wildflower.computer/sdk/rust/) — 03 — `wildflower-computer` — Generated asynchronous Rust sandbox SDK with typed provider inputs, normalized errors, and an injectable HTTP client. - [Go](https://wildflower.computer/sdk/go/) — 04 — `github.com/dnosk/wildflower/sdks/go` — Generated context-aware Go sandbox SDK with typed provider inputs and injectable HTTP clients. - [Zig](https://wildflower.computer/sdk/zig/) — 05 — `wildflower` — Generated synchronous Zig sandbox SDK with explicit allocation, a narrow transport boundary, and owned return values. ## One generated surface Every target represents the same 12 providers, statuses, stable error codes, normalized metadata, and generated lifecycle operations. Language-specific clients adapt naming, ownership, and async conventions without changing the HTTP contract. ## Publication status The generated clients and release-candidate tooling exist in the current API source repository. These pages do not claim that every package has been published to its public registry. Use the checked-in generated source or a verified release candidate until an individual package page states otherwise. ## Shared references - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and error model](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [Machine-readable OpenAPI provenance](https://wildflower.computer/openapi/) > **OpenAPI 0.8.0 / API v1** — Generation source Current packages are version 0.8.0. --- title: "Python sandbox SDK." description: "Generated Python sandbox SDK with synchronous and async clients over the complete shared lifecycle. Review authentication, compatibility, and package provenance." canonical: "https://wildflower.computer/sdk/python/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Python sandbox SDK. Generated Python sandbox SDK with synchronous and async clients over the complete shared lifecycle. The generated client is version 0.8.0 and calls the Wildflower Computer API v1 contract. ## Create, execute, and delete This example uses E2B to make the provider input concrete. The generated client also includes typed creation inputs for the other providers in the 12-adapter OpenAPI contract. ```python import os from wildflower import E2bCreateSandboxInput, RunCommandInput, Wildflower client = Wildflower( wildflower_api_key=os.environ.get("WILDFLOWER_API_KEY"), ) sandbox = client.sandboxes.create( E2bCreateSandboxInput( image="base", timeout=300, ) ) handle = client.sandboxes.attach(sandbox.id) handle.wait_until_ready() result = handle.run_command(RunCommandInput(command="echo hello")) handle.write_text("/tmp/hello.txt", "hello") print(result.stdout, result.stderr, result.exit_code) handle.delete() ``` ## Authentication model The Wildflower Computer API key authenticates the application. The selected provider credential is resolved from a connected project profile or sent as an inline override. Inline secrets are carried in headers and never serialized into the JSON request body. A fresh process can use the same connected project profile. Inline mode requires the credential again; provider-specific connection context remains typed separately. ## Error model API failures expose stable error codes, HTTP status, an optional provider, and the response `X-Request-Id`. A command with a non-zero exit code is a successful execution result, not an API failure. ## Generated package provenance | Package version | `0.8.0` | | --- | --- | | API version | `v1` | | OpenAPI version | `0.8.0` | | Generator version | `0.7.0` | | OpenAPI SHA-256 | `7e4f085adbee5ae5e63941b3286eebbbc90d2185735f5ac2b0a1093432e81c4f` | | Source revision | `788b7325a454b8b753a7d614247d5694bad5c967` | ## Availability Distribution status: **source-only**. The generated package exists in the API source repository and its local release-candidate pipeline. This page does not claim registry publication while the generated status remains source-only. ## Continue - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and normalized error concepts](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) > **wildflower-computer** — Generated package Python 3.11 or newer · Synchronous and async clients --- title: "Rust sandbox SDK." description: "Generated asynchronous Rust sandbox SDK with typed provider inputs, normalized errors, and an injectable HTTP client. Review authentication, compatibility, and package provenance." canonical: "https://wildflower.computer/sdk/rust/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Rust sandbox SDK. Generated asynchronous Rust sandbox SDK with typed provider inputs, normalized errors, and an injectable HTTP client. The generated client is version 0.8.0 and calls the Wildflower Computer API v1 contract. ## Create, execute, and delete This example uses E2B to make the provider input concrete. The generated client also includes typed creation inputs for the other providers in the 12-adapter OpenAPI contract. ```rust use wildflower::{CreateSandboxInput, Wildflower}; let client = Wildflower::new(std::env::var("WILDFLOWER_API_KEY")?)?; let sandbox = client.sandboxes().create(CreateSandboxInput::E2b { api_key: None, image: Some("base".to_owned()), timeout: Some(300), }).await?; let handle = client.sandboxes().attach(&sandbox.id)?; handle.wait_until_ready( std::time::Duration::from_millis(250), std::time::Duration::from_secs(30), ).await?; let result = handle.run_command(&wildflower::RunCommandInput { command: "echo hello".to_owned(), cwd: None, env: None, }).await?; handle.write_text("/tmp/hello.txt", "hello").await?; println!("{}", result.stdout); handle.delete().await?; ``` ## Authentication model The Wildflower Computer API key authenticates the application. The selected provider credential is resolved from a connected project profile or sent as an inline override. Inline secrets are carried in headers and never serialized into the JSON request body. A fresh process can use the same connected project profile. Inline mode requires the credential again; provider-specific connection context remains typed separately. ## Error model API failures expose stable error codes, HTTP status, an optional provider, and the response `X-Request-Id`. A command with a non-zero exit code is a successful execution result, not an API failure. ## Generated package provenance | Package version | `0.8.0` | | --- | --- | | API version | `v1` | | OpenAPI version | `0.8.0` | | Generator version | `0.7.0` | | OpenAPI SHA-256 | `7e4f085adbee5ae5e63941b3286eebbbc90d2185735f5ac2b0a1093432e81c4f` | | Source revision | `788b7325a454b8b753a7d614247d5694bad5c967` | ## Availability Distribution status: **source-only**. The generated package exists in the API source repository and its local release-candidate pipeline. This page does not claim registry publication while the generated status remains source-only. ## Continue - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and normalized error concepts](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) > **wildflower-computer** — Generated package Rust 1.88 or newer · Asynchronous reqwest client --- title: "TypeScript sandbox SDK." description: "Generated TypeScript sandbox SDK with typed provider inputs and the complete shared lifecycle. Review authentication, compatibility, and package provenance." canonical: "https://wildflower.computer/sdk/typescript/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # TypeScript sandbox SDK. Generated TypeScript sandbox SDK with typed provider inputs and the complete shared lifecycle. The generated client is version 0.8.0 and calls the Wildflower Computer API v1 contract. ## Create, execute, and delete This example uses E2B to make the provider input concrete. The generated client also includes typed creation inputs for the other providers in the 12-adapter OpenAPI contract. ```typescript import { Wildflower } from "@wildflowercomputer/sdk"; const client = new Wildflower({ wildflowerApiKey: process.env.WILDFLOWER_API_KEY, }); const sandbox = await client.sandboxes.create({ provider: "e2b", image: "base", timeout: 300, }); const handle = client.sandboxes.attach(sandbox.id); await handle.waitUntilReady(); const result = await handle.runCommand({ command: "echo hello", }); await handle.writeText("/tmp/hello.txt", "hello"); console.log(result.stdout, result.stderr, result.exitCode); await handle.delete(); ``` ## Authentication model The Wildflower Computer API key authenticates the application. The selected provider credential is resolved from a connected project profile or sent as an inline override. Inline secrets are carried in headers and never serialized into the JSON request body. A fresh process can use the same connected project profile. Inline mode requires the credential again; provider-specific connection context remains typed separately. ## Error model API failures expose stable error codes, HTTP status, an optional provider, and the response `X-Request-Id`. A command with a non-zero exit code is a successful execution result, not an API failure. ## Generated package provenance | Package version | `0.8.0` | | --- | --- | | API version | `v1` | | OpenAPI version | `0.8.0` | | Generator version | `0.7.0` | | OpenAPI SHA-256 | `7e4f085adbee5ae5e63941b3286eebbbc90d2185735f5ac2b0a1093432e81c4f` | | Source revision | `788b7325a454b8b753a7d614247d5694bad5c967` | ## Availability Distribution status: **source-only**. The generated package exists in the API source repository and its local release-candidate pipeline. This page does not claim registry publication while the generated status remains source-only. ## Continue - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and normalized error concepts](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) > **@wildflowercomputer/sdk** — Generated package Node.js 20 or newer · Promise-based --- title: "Zig sandbox SDK." description: "Generated synchronous Zig sandbox SDK with explicit allocation, a narrow transport boundary, and owned return values. Review authentication, compatibility, and package provenance." canonical: "https://wildflower.computer/sdk/zig/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Zig sandbox SDK. Generated synchronous Zig sandbox SDK with explicit allocation, a narrow transport boundary, and owned return values. The generated client is version 0.8.0 and calls the Wildflower Computer API v1 contract. ## Create, execute, and delete This example uses E2B to make the provider input concrete. The generated client also includes typed creation inputs for the other providers in the 12-adapter OpenAPI contract. ```zig var client = try Wildflower.init( allocator, wildflower_api_key, transport, ); defer client.deinit(); var sandbox = try client.create(.{ .e2b = .{ .api_key = null, .image = "base", .timeout = 300, } }); defer sandbox.deinit(); var handle = client.attach(sandbox.value.id); var result = try handle.runCommand(.{ .command = "echo hello" }); defer result.deinit(); var written = try handle.writeText("/tmp/hello.txt", "hello"); defer written.deinit(); var deleted = try handle.delete(); defer deleted.deinit(); ``` ## Authentication model The Wildflower Computer API key authenticates the application. The selected provider credential is resolved from a connected project profile or sent as an inline override. Inline secrets are carried in headers and never serialized into the JSON request body. A fresh process can use the same connected project profile. Inline mode requires the credential again; provider-specific connection context remains typed separately. ## Error model API failures expose stable error codes, HTTP status, an optional provider, and the response `X-Request-Id`. A command with a non-zero exit code is a successful execution result, not an API failure. ## Generated package provenance | Package version | `0.8.0` | | --- | --- | | API version | `v1` | | OpenAPI version | `0.8.0` | | Generator version | `0.7.0` | | OpenAPI SHA-256 | `7e4f085adbee5ae5e63941b3286eebbbc90d2185735f5ac2b0a1093432e81c4f` | | Source revision | `788b7325a454b8b753a7d614247d5694bad5c967` | ## Availability Distribution status: **source-only**. The generated package exists in the API source repository and its local release-candidate pipeline. This page does not claim registry publication while the generated status remains source-only. ## Continue - [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/) - [Authentication and normalized error concepts](https://wildflower.computer/docs/concepts/) - [Provider compatibility matrix](https://wildflower.computer/compatibility/) - [OpenAPI and JSON schema downloads](https://wildflower.computer/openapi/) > **wildflower** — Generated package Zig 0.16.0 · Synchronous transport boundary --- title: "Operational truth, component by component." description: "Component-level Wildflower Computer service status with a fail-closed live feed, current prelaunch boundary, and safe incident guidance." canonical: "https://wildflower.computer/status/" openapi_version: "0.8.0" source_revision: "788b7325a454b8b753a7d614247d5694bad5c967" --- # Operational truth, component by component. API availability and derived analytics are reported independently. A delayed ranking snapshot never turns a successful API request into a failure. - [Read the status feed](https://wildflower.computer/status.json) - [Provider rankings](https://wildflower.computer/rankings/) Current observation ## Unknown prelaunchNo fresh observation Transactional plane ### API Unknown The live status feed has not completed a fresh check. Derived plane ### Analytics & rankings Unknown Analytics status is unknown; API requests remain independent. ## The reliability boundary PostgreSQL remains the transactional source of truth. ClickHouse receives append-only, redacted operation events through a non-blocking queue. If ClickHouse is slow, restarting, full, or unavailable, the API continues from PostgreSQL and may drop derived events instead of delaying the customer response. System dependency boundary API + PostgreSQL continues ClickHouse analytics may lag Public rankings ## Signals and escalation A watchdog outside the ClickHouse machine evaluates availability, backup freshness, disk and memory pressure, sustained CPU, active parts, read-only disks, and asynchronous-insert failures. It sends bounded firing, resolution, and reminder messages to the private operator Slack channel. This page receives only the sanitized component state—never account, project, request, machine, credential, command, file, path, payload, or user identity data. ## Current verified state - Private staging passed its bounded API checks on July 28, 2026. That dated proof is not presented as continuous availability. - The website contract is synchronized to backend source`788b7325a454b8b753a7d614247d5694bad5c967` and OpenAPI `0.8.0`. - The self-managed ClickHouse and watchdog deployment sources are validated locally but have not been deployed. - Production infrastructure and public signup are not active. ## Report safely For product or security help, follow the [support guidance](https://wildflower.computer/support/) and share only safe request or operation references. Never send credentials, tokens, commands, file contents, paths, provider payloads, or sandbox output. > **Private prelaunch** — Publication state Public signup and production deployment remain disabled.