Skip to main content
Return a report’s computed pivot table as flat rows, one per pivot row. Each row holds the row groups, then the column groups, then the displayed measures, aligned on columns. pivot says which column is which. Needs a report configured as a pivot table (pivot_table_configuration in get_report); for any other report, use get_report_data. To read the values displayed by its configured chart, use get_report_chart_data. You can read a report granted to you directly, or one shown as a pivot_table tile on a dashboard shared with you.
Breaking change. This tool no longer returns row_groups, column_groups, measure_groups, cells, cell_count_returned or total_cell_count. Read columns, pivot and rows instead, and page with total_row_count. Grouped dates are now YYYY-MM-DD values (name them with period_labels), amounts are no longer rounded to 2 decimals, and limit now counts pivot rows instead of cells.

Values

Values are machine values, as in get_report_data:
  • A date is YYYY-MM-DD.
  • An amount is unrounded, in its column’s currency (the report’s calculation_currency).
  • A percentage is the stored ratio, 0.8 for 80%.
  • A user is {id, email, name}.
  • A cell whose computation failed is listed in error_cells.

Subtotals and grand totals

__total__ in a group cell marks a subtotal or a grand total. Its measures are computed and typed as that measure’s totals in pivot says:
  • operator is the aggregation applied to the total, such as sum or average.
  • scope says what the operator runs on: source_rows (the report rows under the total) or pivot_cells (the pivot cells under the total). It is null for a formula measure.
  • field_type, value_type and currency type the total, which can differ from the measure’s own column (a count of a string field yields a number).
Read a total from its row. Never recompute it by adding up the detail rows: an average, a distinct count or a formula measure does not add up.

Grouped dates

A grouped date is the last day of its period, at the column’s date_granularity (2026-06-30 for a quarter that ends in June). Name the period with the column’s period_labels, which maps each date to its label on the company fiscal calendar, in your language ({"2026-06-30": "Q1 2026"}). Never derive the period name from the date itself.

Paging

Pages count pivot rows: a page holds limit rows from offset. Pass next_offset as offset for the following page; it is null on the last page. total_row_count is the full size. A pivot too large to compute is refused: change its filters or pivot configuration in the web app or with ask_analyst.

Example

A pivot with owner on rows, close_date grouped by quarter on columns, and the sum of amount as its measure:

Parameters

Body

string
required
Id from list_reports, or the report_id of a pivot_table tile of get_dashboard.
integer
Pivot rows per page, 1 to 500. Default 50.
integer
Rows to skip. Omit it for the first page, never null or the string ‘None’; for the next page pass the previous next_offset.

Response

Body

string
string
Web app link to this report.
string
Currency of every amount in this pivot table.
object[]
object
Which columns are the row groups, the column groups and the measures, and how each measure’s totals are computed.
any[][]
One row per pivot row, aligned on columns; __total__ in a group cell marks a subtotal or grand total.
object[]
integer
integer
integer
Pivot-row offset of the next page: pass it as offset. Null on the last page.