Agnes uses skip / limit offset pagination on every list endpoint. The SDKs wrap this transparently with iterators; if you call the API directly, follow the conventions on this page.Documentation Index
Fetch the complete documentation index at: https://docs.lasscyber.com/llms.txt
Use this file to discover all available pages before exploring further.
The wire format
List responses share a common envelope:| Field | Meaning |
|---|---|
items | The page of results. |
total | Total matching records (across all pages). |
skip | Number of records skipped before the first item on this page. |
limit | Maximum number of items per page. |
skip = previous_skip + previous_limit.
skip + len(items) >= total, you’re done.
Default and maximum limits
| Endpoint family | Default limit | Max limit |
|---|---|---|
| Policies, YARA rules, YARA policies, SDP policies, safety policies | 50 | 200 |
| API keys | 50 | 200 |
Analyzer logs (/api/v1/analyzer-logs/search) | 100 | 1,000 |
| Tenants (admin only) | 50 | 200 |
validation_error with a 422.
Filtering
Many list endpoints support asearch query parameter that does
case-insensitive substring matching against the resource’s name (or
the most relevant field). Combine with skip / limit:
SDK helpers
Both SDKs hide theskip / limit math behind iterators.
Python
.pages() is useful if you want to know total up front (e.g. to
render a progress bar) or you want to break the iteration after the
first interesting page.
TypeScript
Stable ordering
List endpoints sort bycreated_at DESC, id DESC by default. For most
collections this is “newest first”, which keeps the first page useful
in dashboards. If you need a different order (e.g. alphabetical for
policies), the dashboard’s policy list does the sort client-side; the
API does not currently expose a sort parameter.
The is_default flag promotes the default policy to the top of the
list returned by GET /api/v1/policies/. SDKs preserve that order.
Performance notes
- Keep
limitreasonable. For UI lists,50is a good default; going past200on policies / rules will rarely render usefully. - Stream analyzer logs. For exports of more than a few thousand
events, prefer the
POST /api/v1/analyzer-logs/searchendpoint rather thanGET /api/v1/analyzer-logs/events_summary. The search endpoint is paginated and tuned for high-volume reads. - Don’t poll for new pages on a hot loop. If you want
near-real-time analysis log updates, use the analyzer log
Elasticsearch index via the search endpoint with a
created_at >= now-1mfilter.
Next
- Rate limits — list endpoints share the per-tenant budget.
- Errors →
validation_error— what happens whenlimitexceeds the cap. - API reference overview — auto-generated endpoint pages.