---
title: "Get Layer Features Paginated"
method: GET
path: "/api/v1/table/{layer_id}/features/paginated"
tags: ["table"]
---

# Get Layer Features Paginated

`GET /api/v1/table/{layer_id}/features/paginated`

Paginated features from the workspace sandbox for AG Grid SSR.

Query params use AG Grid's native camelCase (``startRow``, ``sortModel``,
etc.) to match the ``IServerSideGetRowsRequest`` shape.

## Query parameters

- `startRow` integer, nullable
- `endRow` integer, nullable
- `sortModel` string, nullable
- `filterModel` string, nullable
- `filterId` string, uuid, nullable
- `groupKeys` string, nullable
- `rowGroupCols` string, nullable
- `searchText` string, nullable
- `geometry` string, nullable
- `favoritesOnly` boolean, nullable
- `token` string, nullable — Firebase ID token for MVT authentication

## Response `200`

Successful Response

- PaginatedFeaturesResponse — Response for the paginated sandbox query endpoint. ``last_row`` is the exact filtered match count, computed alongside the page via a single windowed ``COUNT(*) OVER()``. AG Grid uses it to size the scrollbar. ``matched_rows`` and ``total_rows`` are the footer's "X of Y", sent together or not at all. Both are measured on one request against one relation, so a client that renders them as a pair can never combine counts drawn from different layers or from different moments in the layer's life. They are present only on a request whose counts describe the whole layer — a first page with no ``group_keys``; a later page repeats a count the first already carried, and a child block counts one group. ``matched_rows`` is null on a grouped request, whose ``last_row`` counts groups and so has nothing comparable to ``total_rows``. This shape is deliberately reconciled server-side: a client that re-derived "is this the footer's request?" from the request params would be a second copy of that rule, free to drift from this one.
  - `rows` PaginatedFeatureRow[], required
  - `last_row` integer, required
  - `matched_rows` integer, nullable
  - `total_rows` integer, nullable
  - `column_meta` object, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/maia-analytics/apis/maia-api.md) · [All operations](https://skmtc.net/maia-analytics/apis/maia-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/maia-analytics/maia-api/versions/c5094ff58a23/schema)
