---
title: "List report rows (v2)"
method: GET
path: "/api/v1/discovery/report-rows-v2"
tags: ["discovery"]
deprecated: true
---

# List report rows (v2)

`GET /api/v1/discovery/report-rows-v2`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/discovery/report-rows-v2`
- 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`)

> **Deprecated.**

Deprecated: use reports.report-tables.get.v1 (reports_report_tables_get). Page through a campaign's report table for one row dimension (conversations, customers, or win reasons, loss reasons, decision factors, sentiment themes) with chosen columns, filters, sort, and search, over the campaign's conversations dated in the 30 days ending the results window's as-of day (`scope.window`). Each table is read through the report dataset that replaced it: conversations as discovery.conversations lists them, customers by customer from discovery.brand-performance, reasons from discovery.reasons (a win reason of a conversation the brand won, the brand's gap to the winner in one it did not), sentiment themes from discovery.sentiment-themes (the campaign brand's). What no dataset names is left out: decision factors list no row, and a customer's job title, employer and groups and a conversation's decision factor are null.

## Query parameters

- `limit` integer: Number of items to return (1–1000)
- `cursor` string: Opaque cursor returned as nextCursor by the previous page
- `id` string, uuid, required: Discovery campaign id.
- `dateRange` string, nullable: Result window: `all`, a preset id, or `yyyy-MM-dd..yyyy-MM-dd`. Omit for the campaign's default window.
- `segments` string[]: Narrows the read to these segments, ANDed: one `axis:id` per axis (any number of distinct `customer:` entries), in canonical axis order. Empty reads the whole dispatch.
- `dimension` 'conversations' | 'customers' | 'win-reasons' | 'loss-reasons' | 'decision-factors' | 'positive-sentiment' | 'negative-sentiment', required: What one row is: a conversation, a customer, or a win reason, loss reason, decision factor, or sentiment theme with the conversations citing it.
- `columns` string[], required: The dimension's fields each row carries, in order. `conversations`: customerName, engine, date, winner, sentiment, decisionFactor, topics. `customers`: name, conversations, jobTitle, employer, groups, winRate. Every label dimension: name, conversations, share.
- `filters` string[]: Every filter must hold (AND).
- `sortColumn` string: Omit to keep the dimension's own order.
- `sortDirection` 'asc' | 'desc': With sortColumn; default asc.
- `search` string: Free text matched against the selected columns as displayed.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- DiscoveryReportRowsListV2Response
  - `data` object[], required
    - `id` string, required
    - `values` object, required: Keyed by the selected columns; counts are numbers, shares and rates percents.
    - `customerKey` string, nullable: The customer a `conversations` row belongs to; absent or null otherwise.
  - `nextCursor` string, nullable, required
  - `scope` DiscoveryScope, required
    - `campaignId` string, required
    - `state` 'ready' | 'running' | 'failed' | 'out-of-range' | 'no-campaign', required: `ready` carries results; every other state carries none.
    - `failureReason` string, nullable, required
    - `perspective` object, nullable, required: The brand lens applied; null when the report honors no lens or carries no results.
      - `brand` string, required: The brand the results were read as.
      - `isOwnBrand` boolean, required: Whether that brand is the campaign's own.
    - `window` object, nullable, required: The results window; null unless `state` is `ready`.
      - `from` string, date, required: The first UTC day a trend plots: the range's, never before the first interaction.
      - `to` string, date, required: The last UTC day a trend plots: the range's end, never past today.
      - `asOf` string, date, required: The UTC day every single value is as of: its value is the average over the campaign's interactions dated in the 30 days ending with it. The range's end, or, when those 30 days hold none, the last day with an interaction.
      - `comparedTo` string, date, required: The day a change compares with: 30 days before asOf.
      - `interactionCount` integer, required: The interactions dated in the 30 days ending asOf, under the scope.
      - `customerCount` integer, required: The distinct customers of those interactions.
  - `totalCount` number, nullable, required: Rows the filters and query keep; null unless `scope.state` is `ready`.
  - `unfilteredRowCount` number, nullable, required: Rows before filters and query; null unless `scope.state` is `ready`.

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