---
title: "Retrieve Sandbox"
method: GET
path: "/api/v1/sandboxes/{id}"
tags: ["Sandboxes"]
---

# Retrieve Sandbox

`GET /api/v1/sandboxes/{id}`

Retrieves a Fabro-managed sandbox by provider-native id by searching all configured sandbox providers.

## Path parameters

- `id` string, required

## Response `200`

Sandbox found

- SandboxInfo — One sandbox of fabro's provider-backed inventory, as the provider fabro connected it through and the sandbox driver's status.
  - `provider` string, required — Sandbox provider kind. `local`, `docker`, and `daytona` are bundled with the server; any other value names a sandbox-driver plugin configured under `server.sandbox.providers.<kind>`.
  - `status` SandboxStatus, required — What the sandbox driver reports about a sandbox. Only `id` and `state` are always present; every other field is null or empty when the provider does not report it.
    - `id` string, required — The provider's stable identifier for the sandbox.
    - `name` string, nullable — The provider's display name, which is not the stable identifier.
    - `state` 'creating' | 'starting' | 'running' | 'stopping' | 'stopped' | 'pausing' | 'paused' | 'resuming' | 'archiving' | 'archived' | 'restoring' | 'resizing' | 'forking' | 'snapshotting' | 'deleting' | 'deleted' | 'error' | 'unknown', required — The sandbox driver's lifecycle state for a sandbox. The provider's own state string is preserved in `SandboxStatus.provider_state`. A reader must treat a value it does not know as `unknown`.
    - `provider_state` string — The provider's own state string, for display and debugging.
    - `error_reason` string, nullable
    - `resources` SandboxResources — Compute resources of a sandbox, in the units the field names give. A field is null when the provider does not report a value or applies its default.
      - `cpu_cores` integer, nullable
      - `memory_mb` integer, nullable
      - `disk_mb` integer, nullable
      - `gpus` integer, nullable
    - `sandbox_kind` 'container' | 'virtual_machine' | 'unknown' — The kind of isolation a sandbox was provisioned with, as observed by the driver. Not an isolation guarantee.
    - `region` string, nullable — The provider region or target the sandbox runs in.
    - `labels` object — Provider-stored labels, including fabro's ownership labels.
    - `image` string, nullable — The image the sandbox runs, when the provider knows it (a Docker container's image reference).
    - `snapshot` string, nullable — The snapshot the sandbox was created from, when the provider knows it (a Daytona snapshot name).
    - `network` union — The network policy in force for a sandbox. A policy without parameters is its name; an allow list carries its entries.
      - 'provider_default' | 'allow_all' | 'block'
      - object
        - `cidr_allow_list` object, required
          - `cidrs` string[], required
      - object
        - `domain_allow_list` object, required
          - `domains` string[], required
    - `workspace_ownership` 'designated' | 'managed' — Who owns a local sandbox's workspace directory. `designated` is a caller-owned directory that deleting the sandbox never touches; `managed` is a directory the driver created and removes.
    - `web_url` string, nullable — The provider's console page for the sandbox, when it has one.
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable — The provider's most recent activity or update timestamp for the sandbox.

## Other responses

- `404` — No provider found a Fabro-managed sandbox with this id
- `409` — More than one provider matched this sandbox id
- `502` — Provider lookup failed before a definitive result could be determined

## Changes

- **2026-09-12** `36a829c202f5` — 6 breaking, 7 warning, 1 info
  - removed the required property `id` from the response with the `200` status
  - removed the required property `labels` from the response with the `200` status
  - removed the required property `network` from the response with the `200` status
  - removed the required property `resources` from the response with the `200` status
  - …10 more
- **2026-09-11** `1aa32dec61aa` — 1 breaking, 13 info
  - removed the required property `status` from the response with the `200` status
  - added the optional property `display_name` to the response with the `200` status
  - added the optional property `image` to the response with the `200` status
  - added the optional property `native_state` to the response with the `200` status
  - …10 more
- **2026-09-11** `d6093538dc27` — 6 breaking, 7 warning, 1 info
  - removed the required property `id` from the response with the `200` status
  - removed the required property `labels` from the response with the `200` status
  - removed the required property `network` from the response with the `200` status
  - removed the required property `resources` from the response with the `200` status
  - …10 more
- …earlier changes not shown

[Full history](https://skmtc.dev/fabro-sh/apis/fabro-run-api/changes/api/v1/sandboxes/:id/get.md)

---

[API](https://skmtc.dev/fabro-sh/apis/fabro-run-api.md) · [All operations](https://skmtc.dev/fabro-sh/apis/fabro-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fabro-sh/apis/fabro-run-api/revisions/1258a4cf33df?raw)
