---
title: "List model suggestions"
method: GET
path: "/api/v1/models/{modelId}/suggestions"
tags: ["AI Model Suggestions"]
---

# List model suggestions

`GET /api/v1/models/{modelId}/suggestions`

Lists AI-generated model suggestions for a shared model, filtered by dismissal status. Requires organization admin permissions.

## Path parameters

- `modelId` string, uuid, required — UUID of the shared model the suggestions belong to

## Query parameters

- `cursor` string, uuid — Cursor for pagination: the `nextCursor` from the previous response (the last suggestion id).
- `pageSize` integer — Number of results per page (1-100, integer)
- `status` 'active' | 'ignored' | 'all' — Which suggestions to return: `active` (default, not dismissed), `ignored` (dismissed only), or `all`.

## Response `200`

Paginated list of suggestions

- ModelSuggestionsListResponse
  - `pageInfo` PageInfo, required
    - `hasNextPage` boolean, required — Whether more results are available
    - `nextCursor` string, nullable, required — Cursor for fetching the next page
    - `pageSize` number, required — Number of results per page
    - `totalRecords` number, required — Total number of records matching the query
  - `records` ModelSuggestion[], required
    - `aiModifiedAt` string, date-time, required — ISO 8601 timestamp of the last AI write (create or AI update). Unaffected by dismiss/restore.
    - `category` string, required — Suggestion category, e.g. `missing_context`.
    - `createdAt` string, date-time, required — ISO 8601 timestamp of when the suggestion was created.
    - `evidence` SuggestionEvidenceItem[], nullable, required — Source evidence for the suggestion. Null for rows created before evidence was tracked; `[]` when none was cited.
      - `capturedAt` string, required — ISO 8601 timestamp of when the evidence was captured.
      - `chatAiSessionId` string, uuid, required — Chat session that motivated the suggestion.
      - `type` 'ai_chat', required
    - `id` string, uuid, required — Unique identifier for the suggestion.
    - `ignoreReason` string, nullable, required — Optional free-text reason recorded when the suggestion was dismissed.
    - `ignoredAt` string, date-time, nullable, required — ISO 8601 timestamp of dismissal, or null if active.
    - `ignoredBy` string, uuid, nullable, required — User id that dismissed the suggestion, or null if active.
    - `priority` integer, required — Priority from 1 (highest) to 10 (lowest).
    - `proposedChanges` SuggestionProposedChanges, required — The change(s) the suggestion would apply to the model.
      - `edits` SuggestionContextEdit[], required
        - `field` string, required — The model field being edited (e.g. `ai_context`).
        - `target` string, required — Dot-path identifying what the edit applies to, e.g. `views.orders.fields.status`.
        - `value` union, required — The proposed value for the field.
          - string
          - string[]
      - `kind` 'context_edits', required
    - `rationale` string, required — Explanation of why the suggestion was made.
    - `title` string, required — Short human-readable title.
    - `updatedAt` string, date-time, required — ISO 8601 timestamp of the last write of any kind, including dismiss/restore.

## Other responses

- `400` — Invalid query parameters or malformed `modelId`
- `401` — Authentication required
- `403` — Feature not enabled, AI disabled, model is not a shared model, or caller lacks organization admin permissions
- `404` — Model not found in this organization

---

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