---
title: "Get an item"
method: GET
path: "/cms/items/find"
tags: ["CMS items"]
---

# Get an item

`GET /cms/items/find`

## Request

- Base URL: `https://api.cactal.ai/v1`
- URL: `https://api.cactal.ai/v1/cms/items/find`
- Auth: HTTP bearer

Returns one item, looked up by `itemId` or by the `collectionId` + `slug` pair (provide exactly one of the two). The `data` object is complete and schema-shaped: every currently-defined field is present and missing optional values read as `null`. `depth` (0–3, default 0) embeds referenced items in place of their ids, one level per unit; referenced items that were deleted read as `null` (single reference) or are omitted from arrays (multi-reference). Set `published` to `"true"` or `"false"` to match only a published or only a draft item (a mismatch reads as not found). List items that reference it with `cms.items.backreferences.list`.

## Query parameters

- `itemId` string: Item id. Provide either this or the `collectionId` + `slug` pair.
- `collectionId` string: Collection to look the item up in by slug. Pair with `slug`.
- `slug` string: Item slug within the collection. Pair with `collectionId`.
- `depth` integer
- `published` union: Only match a published (`"true"`) or draft (`"false"`) item; a mismatch reads as not found. Omit to match either.
  - 'true'
  - 'false'

## Response `200`

The item, hydrated to the requested depth.

- object
  - `id` string, required: Unique item id.
  - `collectionId` string, required: Id of the owning collection.
  - `slug` string, required: URL-shaped identifier, unique among the collection’s active items. Lowercase letters, digits, and hyphens; max 256 characters.
  - `publishedAt` string, date-time, nullable, required: `null` while the item is a draft or scheduled; the actual publish timestamp otherwise.
  - `publishAt` string, date-time, nullable, required: Future publication time while the item is scheduled; `null` for drafts and published items.
  - `createdAt` string, date-time, required: Creation timestamp.
  - `updatedAt` string, date-time, required: Last-modification timestamp.
  - `position` string, required: Fractional ordering key; the default list order sorts by this value.
  - `data` object, required: One entry per field of the collection, keyed by field key; optional fields with no value read as `null`. Scalar fields use plain JSON values: `date` as an ISO 8601 string, `color` as normalized hex, `option` as a choice id (or array of ids when multi-select). `reference` values are the referenced item id at depth 0 or an embedded item object (this same item shape) at depth ≥ 1; `multi_reference` values are ordered arrays of the same. `image` and `gallery` values resolve to image objects carrying `id`, delivery `url`, `originalUrl`, `srcSet`, `variants`, dimensions, `filename`, `mimeType`, `byteSize`, and `altText`; `file` values resolve to `{ id, url, filename, mimeType, byteSize }`. Unset asset fields read as `null` (or `[]` for galleries).

## 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)
