---
title: "List Catalog"
method: GET
path: "/catalog"
tags: ["Catalog"]
---

# List Catalog

`GET /catalog`

List a keyset page of browsable catalog entries (search/filter aware).

The catalog holds thousands of entries, so this is cursor-paginated like
``GET /apis``: follow ``next_cursor`` until ``has_more`` is false.
``catalog_total``/``registered_count``/``outdated_count`` count the whole
manifest, not the page, so the Discover status row stays stable while scrolling.

## Query parameters

- `q` string, nullable
- `registered_only` boolean
- `unregistered_only` boolean
- `outdated_only` boolean
- `include_snoozed` boolean
- `cursor` string, nullable
- `limit` integer

## Response `200`

Successful Response

- CatalogListResponse — List of catalog entries plus status fields for the Discover status row.
  - `catalog_total` integer, required — Total entries in the whole manifest (pre-filter, pre-page).
  - `data` CatalogEntryResponse[], required — The page of catalog entries.
    - `_links` CatalogEntryLinksResponse, required — Hypermedia links for a catalog entry.
      - `github` string, nullable — Human-facing GitHub tree URL for the entry, when known.
      - `import` string, required — URL of the catalog import action (`POST /catalog/{api_id}:import`).
      - `operations` string, required — URL of the entry's operation preview.
      - `self` string, required — Canonical URL of this catalog entry.
    - `api_id` string, required — Catalog identity of the API (manifest domain, e.g. `stripe.com`).
    - `path` string, nullable, required — Manifest path of the entry within the public-APIs repo.
    - `registered` boolean, required — Whether this entry is already imported locally — its `spec_url` backs a non-archived revision in `GET /apis`.
    - `spec_url` string, nullable, required — Fetchable OpenAPI spec URL the entry resolves to (used for import + coverage).
    - `update_available` boolean — Whether this (registered) entry has an upstream spec update the local revision hasn't adopted yet. Always false for unregistered entries.
    - `vendor` string, nullable, required — Registrable-domain vendor derived from `api_id` (e.g. `stripe.com`).
  - `has_more` boolean — Whether another page follows.
  - `manifest_age_seconds` integer, nullable — Age of the cached manifest in seconds, or null when the cache is empty.
  - `next_cursor` string, nullable — Opaque keyset cursor for the next page (null when done).
  - `outdated_count` integer — Count of whole-manifest registered entries with an upstream update available.
  - `registered_count` integer, required — Count of whole-manifest entries already imported locally.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Entity
- `500` — Internal Server Error
- `503` — Service Unavailable

## Changes

- **2026-08-04** `a917fe7f0026` — 1 info
  - added the new optional `query` request parameter `include_snoozed`
- **2026-07-31** `662bbfb3ad23` — 3 info
  - added the new optional `query` request parameter `outdated_only`
  - added the optional property `data/items/update_available` to the response with the `200` status
  - added the optional property `outdated_count` to the response with the `200` status
- **2026-07-01** `d65fcba0d25a` — 3 breaking, 27 info
  - for the `query` request parameter `limit`, the max was decreased from `500.00` to `200.00`
  - the response's body type/format changed from ``/`` to `object`/`` for status `200`
  - the `detail` response's property type/format changed from `array`/`` to `string`/`` for status `422`
  - api operation id `list_catalog_catalog_get` removed and replaced with `listCatalog`
  - …26 more
- **2026-05-07** `5a765d68c56f` — 1 info
  - the endpoint scheme security `AgentOauthAccessToken` was added to the API
- **2026-04-13** `76e8f6063728` — 8 breaking, 10 warning, 12 info
  - the response's body type/format changed from `object`/`` to ``/`` for status `200`
  - media type `application/problem+json` was changed to a more general media type `application/json` for the response status `422`
  - the response property `detail` became optional for the status `422`
  - the `detail` response property's maxLength was unset from `4096` for the response status `422`
  - …26 more

[Change history](https://skmtc.dev/jentic/apis/jentic-control-plane-api/changes/catalog/get.md)

---

[API](https://skmtc.dev/jentic/apis/jentic-control-plane-api.md) · [All operations](https://skmtc.dev/jentic/apis/jentic-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/jentic/jentic-control-plane-api/revisions/f4594f50f4d3/schema)
