> ## Documentation Index
> Fetch the complete documentation index at: https://docs.memorylake.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List Low-Balance Alert Events

> Lists the alert levels that fired, newest first, with the balance at the time and the emails sent

```
GET /openapi/memorylake/admin/v1/billing/credit-balance/alert/events
```

Lists the alert levels that fired, newest first, with the balance at the time and the emails sent.

<Note>
  **Permission required:** `credits:view`
</Note>

### Query Parameters

<ParamField query="page_size" type="integer" default="20">
  Items per page (1–100)
</ParamField>

<ParamField query="continuation_token" type="string">
  Token from the previous page
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET 'https://app.memorylake.ai/openapi/memorylake/admin/v1/billing/credit-balance/alert/events' \
    -H 'Authorization: Bearer sk_xxxxxx'
  ```
</RequestExample>

### Response

<ResponseField name="data" type="object">
  <Expandable title="Load More Response Balance Alert Event object">
    <ResponseField name="items" type="array">
      List of items in the current page

      <Expandable title="Balance Alert Event object">
        <ResponseField name="balance_tokens" type="integer">The balance when it fired, in tokens (negative after an overdraft)</ResponseField>
        <ResponseField name="fired_at" type="integer">Unix seconds</ResponseField>
        <ResponseField name="id" type="integer">Event id</ResponseField>

        <ResponseField name="recipients" type="array">
          Emails sent for this event. When several levels fire at once, only the most severe sends email; the others list none

          <Expandable title="Balance Alert Delivery object">
            <ResponseField name="status" type="string">Whether the email was accepted for delivery. One of: `sent`, `failed`.</ResponseField>
            <ResponseField name="email" type="string">Recipient address. Alerts also go to the team owner; that address is shown only to owners and admins (the same rule as members' contact details) — for other callers the entry carries just its status.</ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="recovered" type="boolean">The balance has since risen back above this level</ResponseField>

        <ResponseField name="threshold" type="object">
          The level that fired

          <Expandable title="Balance Alert Threshold object">
            <ResponseField name="type" type="string">percent\_used = alert when the share of the subscription cycle (or, without a subscription, of all credit ever added) used reaches value percent; tokens\_remaining = alert when the balance falls to value tokens</ResponseField>
            <ResponseField name="value" type="integer">1–99 for percent\_used; 1–1,000,000,000 for tokens\_remaining</ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="recovered_at" type="integer">When it recovered, Unix seconds</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="continuation_token" type="string">Token to fetch the next page; absent on the last page</ResponseField>
    <ResponseField name="total" type="integer">Total number of items matching the filter across all pages; omitted when the count is unavailable</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Success (200) theme={null}
  {
    "success": true,
    "message": "Operation completed successfully",
    "data": {
      "items": [
        {
          "balance_tokens": 1200000,
          "fired_at": 1760000000,
          "id": 1,
          "recipients": [
            {
              "status": "sent",
              "email": "alice@example.com"
            }
          ],
          "recovered": false,
          "threshold": {
            "type": "percent_used",
            "value": 1
          },
          "recovered_at": 1760000000
        }
      ],
      "continuation_token": "eyJvZmZzZXQiOjIwfQ",
      "total": 1
    }
  }
  ```
</ResponseExample>

### Errors

Errors answer with `success: false`, a `message` and an `error_code`. See [Error Codes](/features/memorylake/api-reference/errors) for every code.

| Status | Meaning |
| - | - |
| `400` | A parameter or the body is invalid |
| `401` | The API key is missing, invalid, disabled or expired |
| `403` | The key is not allowed to do this |
| `422` | The body or a parameter failed validation |
| `429` | Too many requests. Wait for the time in `Retry-After` |
| `500` | Server-side error |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.