---
title: "Get a workspace stash by ID"
method: GET
path: "/v1/workspaces/{workspaceId}/stashes/{id}"
tags: ["Stashes"]
---

# Get a workspace stash by ID

`GET /v1/workspaces/{workspaceId}/stashes/{id}`

## Request

- Base URL: `https://external-api.pirros.com`
- URL: `https://external-api.pirros.com/v1/workspaces/{workspaceId}/stashes/{id}`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.pirros.com/oauth/token`

Retrieve a single stash scoped to the workspace, including its flat membership list (details and families, hard-capped at 500). project_id is derived from the stash items and firm_id from the workspace. A stash in another workspace, a cross-firm stash, and a missing stash all return 404 (indistinguishable — no existence disclosure).

## Path parameters

- `workspaceId` string, uuid, required
- `id` string, uuid, required

## Response `200`

Stash found

- ExternalStashResponse: Single stash resource
  - `response` object, required: Stash metadata for external API consumers. is_firm_stash is read-only: true for a firm stash, listed under Firm for every member whose role can view firm stashes; false for a stash listed in its owner's Private list. An API key's stash placement decides it at creation.
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `project_id` string, uuid, required
    - `firm_id` string, uuid, required
    - `workspace_id` string, uuid, required
    - `is_permanent` boolean, required
    - `is_firm_stash` boolean, required
    - `is_archived` boolean, required
    - `downloaded_at` string, date-time, nullable, required
    - `items` union[], required
      - union
        - object
          - `item_type` 'detail', required
          - `detail_id` string, uuid, required
          - `family_id` unknown, required
        - object
          - `item_type` 'family', required
          - `detail_id` unknown, required
          - `family_id` string, uuid, required
    - `created_at` string, date-time, required
    - `expanded` object, required
  - `meta` object, required
    - `request_id` string, uuid, required

## Other responses

- `400`: Invalid request (bad path param, query param, or cursor)
- `401`: Unauthorized (invalid or missing token)
- `404`: Stash not found in this workspace
- `429`: Rate limit exceeded (1000 requests per hour per client)
- `503`: External API temporarily disabled by operator kill switch (service_unavailable)

---

[API](https://skmtc.dev/pirros/apis/pirros-external-api.md) - [All operations](https://skmtc.dev/pirros/apis/pirros-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pirros/apis/pirros-external-api/revisions/01c66b8d9fd1?raw)
