---
title: "List environment listings on the shelf [public]"
method: GET
path: "/catalog/environments"
tags: ["catalog"]
---

# List environment listings on the shelf \[public\]

`GET /catalog/environments`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/catalog/environments`
- Auth: none required

Approved environment listings, plus the caller's own workspace's listings. With the shelf open to every workspace it needs no credentials; with it open to some workspaces only, readers signed in to one of them. Answers 404 when the shelf is not enabled. Answers 503 `not_migrated` until the shelf migration is applied.

## Query parameters

- `q` string
- `category` 'websites' | 'content' | 'video' | 'code' | 'research' | 'general'
- `sort` 'most_used' | 'best_rated' | 'newest'

## Response `200`

OK

- object
  - `environments` EnvironmentListing[], required
    - `id` string, required: The listing id (lst_…)
    - `handle` string, required: Globally unique within environment listings; lower-case letters, digits and underscores
    - `name` string, required
    - `tagline` string, required: One line, at most 140 characters
    - `description` string, required
    - `categories` string[], required
    - `packages` object, nullable, required: The listed environment's package configuration, or null when it has none
    - `tools` object, nullable, required: The listed environment's tool policy, or null when it has none
    - `networking` object, nullable, required: The listed environment's networking configuration, or null when it has none
    - `installs` integer, required: How many workspaces have installed this listing
    - `seller` object, nullable, required: Who published it to other workspaces, by the name they chose; null while it is visible only to its own workspace
      - `name` string, required
    - `visibility` 'workspace' | 'public', required: workspace = visible only to the owning workspace; public = approved, and visible to every workspace the shelf is open to. Other workspaces read and install the approved version; the owner's later edits wait for a new approval
    - `conformance` object, nullable, required: The smoke run the approved version passed; null for a listing that is not public
      - `required_passed` boolean, required: Every required check of the smoke run passed
      - `all_passed` boolean, required
      - `checked_at` string, date-time, required
    - `created_at` string, date-time, required

## Other responses

- `default`: Error — { error: { code, message } }

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/catalog/environments/get.md)

---

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