---
title: "List all stacks"
method: GET
path: "/v1/stacks"
tags: ["Stacks"]
---

# List all stacks

`GET /v1/stacks`

## Request

- Base URL: `https://statusstack.com/api`
- URL: `https://statusstack.com/api/v1/stacks`
- Auth: HTTP bearer

Returns the stacks in the team the API key is scoped to. Unscoped keys are
rejected with 403 rather than falling back to a session team.

## Query parameters

- `page` integer
- `per_page` integer
- `stack_type` 'application' | 'tech' | 'business' | 'custom' | 'status_page': What the stack groups together, as stored. `status_page` is legacy: it is never selectable on create, and on update it is accepted only when it is already the stack's current type (`StackType::selectableValuesIncluding()`).
- `visibility` 'public' | 'private' | 'password' | 'unlisted': Who may view the stack's public page. `password` requires a `password` on the create/update request.
- `search` string
- `order_by` 'created_at' | 'updated_at' | 'name' | 'slug'
- `order_dir` 'asc' | 'desc'

## Response `200`

Paginated list of stacks

- StackCollection
  - `data` Stack[]
    - `id` string, uuid
    - `name` string
    - `slug` string
    - `description` string, nullable
    - `stack_type` 'application' | 'tech' | 'business' | 'custom' | 'status_page': What the stack groups together, as stored. `status_page` is legacy: it is never selectable on create, and on update it is accepted only when it is already the stack's current type (`StackType::selectableValuesIncluding()`).
    - `visibility` 'public' | 'private' | 'password' | 'unlisted': Who may view the stack's public page. `password` requires a `password` on the create/update request.
    - `public_url` string, uri, nullable
    - `parent_stack_id` string, uuid, nullable
    - `sources_count` integer
    - `components_count` integer
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `parent_stack` Stack (recursive)
    - `child_stacks` Stack[]
  - `meta` object
    - `current_page` integer
    - `from` integer, nullable
    - `to` integer, nullable
    - `per_page` integer
    - `total` integer
    - `last_page` integer
  - `links` object
    - `first` string, uri
    - `last` string, uri
    - `prev` string, uri, nullable
    - `next` string, uri, nullable

## Other responses

- `401`: No bearer credentials, or credentials that do not resolve to an API key or Sanctum token. Produced by `ApiAuthentication` ahead of the route, so every operation in the v1 group can return it.
- `403`: The API key lacks the required permission, or a policy denied the action. The two come from different layers and return different bodies, so this is a union rather than one shape.
- `429`: The `v1-api` rate limit (120 requests per minute) was exceeded. Applies to every operation in the v1 group.

---

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