---
title: "2026-07-31 · The audit log now records API and admin actions"
description: "Every change made with an API key or from the dashboard is written to the audit log. Before this, only scheduler jobs were recorded."
order: 1
date: "2026-07-31"
---

# The audit log now records API and admin actions

The audit log kept only one kind of entry: work done by our scheduler. Changes you made with an API key were not written. Neither were changes made in the dashboard.

This is fixed. Every change is recorded from today.

## What you will see

`GET /v1/audit-log` returns rows it never returned before.

Each row says who made the change:

- `api` — somebody used one of your API keys.
- `admin` — a person used the dashboard.
- `system` — a QuotaStack job did it, such as a renewal or an expiry sweep.

The `actor_type` filter now works for all three. It returned nothing for `api` and `admin` before, because no row held those values.

## What went wrong

The `actor_type` column accepts three values: `api`, `admin`, and `system`. Our code wrote `api_key` and `admin_user` instead. The database rejected every one of those rows.

The code then threw the error away. Your API call still returned `200`, so nothing looked wrong.

Two more fields failed the same way. Some changes sent an empty environment, and dashboard sign-ins sent an empty tenant. Both are now filled in.

## History is not filled in

Rows for changes made before today do not exist. They were rejected, not stored somewhere else. We cannot rebuild them.

Treat the audit log as complete from 31 July 2026 onward.

## One smaller change

`GET /v1/audit-log?actor_type=` now returns `400` when the value is not one of the three. It returned `500` before.
