---
title: "Read catalog arrival events or capture a polling cursor."
method: GET
path: "/api/retention/catalog-arrivals"
tags: ["Agent Docs"]
---

# Read catalog arrival events or capture a polling cursor.

`GET /api/retention/catalog-arrivals`

## Request

- Base URL: `https://huggingbay.xyz`
- URL: `https://huggingbay.xyz/api/retention/catalog-arrivals`
- Auth: none required

mode=high-water captures the latest matching cursor; page reads subsequent arrivals. Copy all returned cursor fields together. source-unavailable is an HTTP 200 refusal, not an empty successful page.

**Inputs.** Path, query and header fields are listed below. No request body is required.

**Outputs.** See each status below for its media type, schema and headers. A missing record or unavailable capability is not a successful empty result.

**Errors.** API JSON failures use the documented response schema. Read code, message and next; retry only when the response allows it. Auth, invalid input and missing records need a caller change.

**Rate limits.** Public read budgets apply by client IP and route group. This operation can have a smaller route-specific budget. Read Retry-After on 429 or retryable 503 responses.

## Query parameters

- `mode` 'page' | 'high-water'
- `limit` integer
- `q` string
- `type` string
- `license` string
- `task` string
- `framework` string
- `format` string
- `worksWith` string
- `owner` string
- `source` string
- `hosting` string
- `reviewStatus` string
- `scan` string
- `minCard` integer
- `verified` '1'
- `commercial` '1'
- `afterArrivedAt` string
- `afterArtifactId` string
- `afterRevision` string
- `afterEventId` string

## Response `200`

Read catalog arrival events or capture a polling cursor.

- object
  - `schemaVersion` string
  - `status` 'ready' | 'source-unavailable', required
  - `arrivalBasis` string
  - `criteria` object
  - `observedAt` string
  - `rows` object[]
    - `eventId` string
    - `artifactId` string
    - `revision` string, nullable
    - `arrivedAt` string
    - `artifact` object
  - `hasMore` boolean
  - `cursor` object, nullable
  - `reason` string

## Other responses

- `422`: Invalid retention criteria.
- `429`: Request budget exceeded. Wait for Retry-After.

---

[API](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api.md) · [All operations](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/revisions/ea7ba26b1e27?raw)
