---
title: "Get a collection"
method: GET
path: "/cms/collections/{collectionId}"
tags: ["CMS collections"]
---

# Get a collection

`GET /cms/collections/{collectionId}`

## Request

- Base URL: `https://api.cactal.ai/v1`
- URL: `https://api.cactal.ai/v1/cms/collections/{collectionId}`
- Auth: HTTP bearer

Returns a collection together with its full field list, which defines the shape of every item in it.

## Path parameters

- `collectionId` string, required

## Response `200`

The collection and its fields.

- object
  - `collection` object, required
    - `id` string, required: Unique collection id.
    - `websiteId` string, required: Id of the owning website.
    - `slug` string, required: URL-shaped identifier, unique among the website’s active collections. Lowercase letters, digits, and hyphens, starting with a letter; max 64 characters.
    - `displayName` string, required: Human-readable name, 1–200 characters.
    - `description` string, nullable, required: Optional description, up to 2,000 characters.
    - `createdAt` string, date-time, required: Creation timestamp.
    - `updatedAt` string, date-time, required: Last-modification timestamp.
  - `fields` object[], required: The fields defining the shape of every item in the collection, in display order.
    - `id` string, required: Unique field id.
    - `collectionId` string, required: Id of the owning collection.
    - `key` string, required: JSON key under item `data`. Lowercase snake_case, max 64 characters, unique per collection. Changed only via `key` on the update-field endpoint, which migrates stored data.
    - `displayName` string, required: Human-readable name, 1–200 characters.
    - `description` string, nullable, required: Optional description, up to 2,000 characters.
    - `type` 'plain_text' | 'markdown' | 'number' | 'boolean' | 'date' | 'link' | 'email' | 'color' | 'option' | 'reference' | 'multi_reference' | 'image' | 'gallery' | 'file', required: Value type. Immutable after creation.
    - `required` boolean, required: Whether every item must carry a non-null value for this field. Enforced on write.
    - `isUnique` boolean, required: Whether values must be unique across the collection’s active items. Not supported for `plain_text`, `markdown`, `multi_reference`, `image`, `gallery`, or `file` fields.
    - `position` string, required: Fractional ordering key; fields sort lexicographically by this value.
    - `example` unknown, required
    - `config` object, nullable, required: Type-specific configuration. Present for `option` fields only; `null` for all other types.
      - `choices` object[], required: Selectable choices, 1–1,000.
        - `id` string, required: Stable choice id stored as the field value.
        - `label` string, required: Human-readable choice label.
      - `multiple` boolean, required: Whether items may select multiple choices.
    - `targetCollectionId` string, nullable, required: For `reference` and `multi_reference` fields, the id of the collection referenced items must belong to (same website). `null` otherwise. Immutable.

## Other responses

- `400`: Validation failed. The response `message` names the first invalid field.
- `401`: Missing, invalid, expired, or revoked API key.
- `403`: The authenticated principal lacks the required capability.
- `404`: The resource does not exist or is outside the principal’s access scope.
- `429`: Rate limit exceeded. Retry after the number of seconds in the `Retry-After` header.

---

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