---
title: "List datasets"
method: GET
path: "/api/v1/reports/datasets"
tags: ["reports"]
---

# List datasets

`GET /api/v1/reports/datasets`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/reports/datasets`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

List the datasets a report can read, or one product's (`product`: discovery, experience or research). Each names its id, label and description, whether it aggregates (rows and columns grouped by its dimensions, each cell its measures) or lists records (one row per interaction, its dimensions as fields), how it reads time (`window`: the trailing 30-day results window ending on the as-of day a date range chooses; `range`: the range itself), its dimensions and measures, how many row and column dimensions a report may group by, whether it compares with the window 30 days earlier, the records dataset a cell opens (`drill`), and what a new report of it opens on.

## Query parameters

- `limit` integer: Number of items to return (1–1000)
- `cursor` string: Opaque cursor returned as nextCursor by the previous page
- `product` 'discovery' | 'experience' | 'research': Only this product's datasets.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- ReportsDatasetsListResponse
  - `data` object[], required
    - `id` string, required: `<product>.<name>`, the definition's `dataset`.
    - `product` 'discovery' | 'experience' | 'research', required: The product whose results a report reads.
    - `label` string, required
    - `description` string, required
    - `grain` 'aggregate' | 'records', required: `aggregate`: rows and columns grouped by dimensions, each cell its measures. `records`: one row per interaction, the dimensions as its fields.
    - `scope` 'window' | 'range', required: `window`: the trailing 30-day results window ending on the as-of day the date range chooses. `range`: the range itself.
    - `allCampaigns` boolean, required: Whether a report may read every campaign of the product at once (`scope.campaignId` null), each campaign read as its own dashboard reads it and pooled.
    - `dimensions` ReportsDimensions[], required
      - `key` string, required: A key a report definition names.
      - `label` string, required
      - `kind` 'customer' | 'evidence' | 'time', required: `customer`: an attribute of the customer the interaction ran against. `evidence`: what the interaction found or ran on. `time`: the day a window's figure is read as of.
      - `multiValued` boolean, required: One interaction can hold several of its values, so its cells never add up to their total.
      - `filterable` boolean, required: Whether a report may keep only some of its values.
      - `sortable` true: A records dataset's field a report may sort by.
      - `filterOnly` true: A dimension a report can only filter by, never group by or show.
      - `singleValueFilter` true: A report's filter on it keeps one value at most.
    - `measures` object[], required
      - `key` string, required: A key a report definition names.
      - `label` string, required
      - `format` 'count' | 'percent' | 'stars' | 'score' | 'mean', required: Only a count can be shown as a share of its row, column or total.
      - `precision` 'share' | 'derived' | 'none', required: `share`: a margin over the cell's customers. `derived`: a verdict from its customers. `none`: no precision.
      - `description` string, required
    - `limits` object, required: How many row and column dimensions a report may group by.
      - `rows` integer, required
      - `columns` integer, required
    - `exclusive` array[]: Sets of dimensions a report groups by at most one of.
      - string[]
    - `filterExcludes` object[]: A report that filters by any of `filters` groups by none of `grouping`.
      - `filters` string[], required
      - `grouping` string[], required
    - `compare` boolean, required: Whether a report may compare with the window 30 days earlier.
    - `drill` string: The records dataset a cell opens, filtered to its values.
    - `defaults` object, required: What a new report of the dataset opens on.
      - `rows` string[], required
      - `columns` string[], required
      - `measures` string[], required
  - `nextCursor` string, nullable, required

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

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