# List Alerts

```
GET 
/v1/alerts
```

The account's alerts you may read, one cursor page at a time.

With `vizId` the viz is resolved through the ACL first (404 when out of reach) and `total` is counted. Without it, every distinct viz on the page is resolved at VIEW level and rows on a viz you cannot see are dropped; the DB is read until the page is full or exhausted, so a short page still means "last page", and `total` is `null` (not counted).

**An alert whose DASHBOARD HAS BEEN DELETED is listed, with `orphaned: true`.** It fails the same resolution as one you may not view, and the two are separated by a second, unfiltered lookup made only for a viz that already failed — because they need opposite answers. Dropping the orphan left a row its owner could delete but could not find, which is an obligation nobody could discharge; dropping the unviewable one is the access control working. Nothing evaluates an orphan and it cannot be edited: `DELETE` is the only action it has left.

Cursor-paginated. The wire query parameter is `exclusiveStartKey` (what the cURL tab and the parameter table show); the TypeScript SDK takes it as the `exclusiveStartKey` option and the Python SDK as the `exclusive_start_key` keyword — one parameter, spelled per language. Pass the previous page's `nextKey` and stop when it comes back `null` — or let `iterAll()` / `iter_all()` drive the cursor for you (see the SDKs page, "Pagination").

## Request[​](#request "Direct link to request")

## Responses[​](#responses "Direct link to Responses")

* 200
* 404
* 422

Successful Response

Not found

Validation Error
