---
title: "List dataset items"
method: GET
path: "/v1/projects/{project_id}/datasets/{dataset_id}/items"
tags: ["Evaluations"]
---

# List dataset items

`GET /v1/projects/{project_id}/datasets/{dataset_id}/items`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/datasets/{dataset_id}/items`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Returns the test cases in a dataset, oldest first

## Path parameters

- `dataset_id` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

List of dataset items

- object
  - `data` DatasetItem[], required
    - `id` string
    - `dataset_id` string
    - `input` object[]: Messages replayed verbatim as the generation's input
      - `role` string, required
      - `content` string, required: Message content — a string, or AI SDK content parts
    - `expected_output` string, nullable
    - `metadata` MetadataBag: Caller-owned annotations on a resource, stored as the object they were written as: the types a value was written with are the types a read returns, so a filter can ask an ordering question about a number. Unlike other body fields, keys are stored and returned verbatim in the casing supplied — they are not converted between snake_case and camelCase. No key is reserved, and that is the point: every piece of state the platform owns lives in its own typed column, so nothing written here reaches platform state. The platform never reads the bag — it is not an IAM context, not a policy input and not part of a prompt — which is what separates it from a tag bag.
    - `source_generation_id` string, nullable: The generation this item was curated from. A curated item is a deliberate fixture: erasing the source generation neither deletes nor mutates it.
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Dataset not found

---

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