GET /v1/issues, GET /v1/patterns, etc.) use cursor-based pagination and return a consistent response envelope. This page documents the common query parameters and the page object shape.
Response envelope
Every list endpoint returns adata array and a page metadata object:
The current page of results.
An opaque cursor token. Pass it as
?cursor= on the next request to retrieve the following page. null when you are on the last page.true if there are more results after this page.Total number of matching records across all pages. May be estimated for very large result sets (>10 000 records).
Common query parameters
These parameters are supported on every list endpoint unless documented otherwise:Number of results per page. Minimum
1, maximum 100.Opaque cursor from the previous page’s
page.next_cursor. Omit for the first page.Sort field with optional direction prefix. Prefix with
- for descending (default on most endpoints), no prefix for ascending. Example: -created_at (newest first), created_at (oldest first).Cursors are opaque and signed. Passing a modified or fabricated cursor string returns
400 Bad Request with code validation_error and detail "malformed cursor token".Issues — additional filter params
Filter by issue status. Values:
open, in_progress, resolved, closed.Filter by severity. Values:
critical, high, medium, low.Filter issues belonging to a specific pattern.
Full-text search across issue title and description. Maximum 200 characters.
Patterns — additional filter params
Filter by pattern status. Values:
active, resolved, watching.Search pattern names. Maximum 200 characters.
Filter patterns by domain fingerprint (e.g.
payments, auth).Minimum risk score (0–100, inclusive).
Maximum risk score (0–100, inclusive). Must be ≥
risk_min.risk_score, -risk_score, issue_count, -issue_count, last_seen_at, -last_seen_at.
Paginating through results
Fetch page 1, then use the returned cursor for page 2:Filtering and sorting example
Fetch the 10 highest-risk active patterns in thepayments domain: