---
title: "Navigate Layer Feature"
method: GET
path: "/api/v1/table/{layer_id}/features/navigate"
tags: ["table"]
---

# Navigate Layer Feature

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

Server-side prev/next cursor for the focused-feature panel.

Runs a single CTE on the current filtered set per call — no cap on
set size and no client-side id materialization, so navigation works
past the old 100k boundary. ``wrap`` controls behavior at the
endpoints (true → loop, false → ``None``).

## Query parameters

- `currentId` string, required
- `wrap` boolean
- `enrichmentState` string, nullable
- `enrichmentName` string, nullable
- `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

- NavigateCursorResponse — Server-side cursor result for prev/next navigation. Replaces the legacy client-side id-array cache (capped at 100k); each navigation invocation runs a single CTE on the live filtered set, so we cap-free up to whatever the filtered set actually contains. ``position`` is 0-based; ``total`` is the filtered set size.
  - `prev_id` string, nullable, required
  - `next_id` string, nullable, required
  - `position` integer, required
  - `total` integer, required

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