List configuration revisions
GET /v1/config-revisions · permission config:read
Every successful plan apply stores a revision: the state of the resources it changed, as they were just before the apply. This lists the environment's revisions, newest first (order=asc reverses). An environment keeps its newest 50 revisions, each for at most 90 days. To go back to a revision, restore it.
Items carry only metadata. The stored resource specs are not returned, and revisions never contain secret values (secrets appear only as secret_ref placeholders).
Request
| Parameter | In | Description |
|---|---|---|
limit |
query | Page size, 1–100. |
after |
query | Cursor for the next page (list_metadata.after). |
before |
query | Cursor for the previous page (list_metadata.before). |
order |
query | desc (default, newest first) or asc. |
Response
200 OK with Cache-Control: no-store.
| Field | Description |
|---|---|
id |
The revision id, cfgr_…. |
plan_id |
The plan whose apply stored the revision; null once the plan is deleted (7 days after it expires). |
created_by |
The credential that applied the plan. |
created_at |
When the plan was applied. |
kinds |
The kinds the plan covered. |
summary |
The apply's create, update, delete and no_op counts. |
{
"data": [
{
"id": "cfgr_01m4qpqtywfs7930tb6kqn5rc5",
"plan_id": "cfgp_01m4qpqtywfs7930tb6kqn5rc5",
"created_by": "key_01m4qpqtywfs7930tb6kqn5rc5",
"created_at": "2026-10-19T10:00:00Z",
"kinds": ["connection"],
"summary": {"create": 1, "update": 1, "delete": 0, "no_op": 1}
}
],
"list_metadata": {"before": null, "after": null}
}
Errors
| HTTP | code | When |
|---|---|---|
| 400 | invalid_cursor |
The cursor is malformed or belongs to another request. |
| 401 | unauthenticated |
The credential is missing, invalid or revoked. |
| 403 | insufficient_permissions |
The credential lacks config:read. |
| 422 | validation_failed |
A query parameter is invalid (for example limit outside 1–100). |
| 429 | rate_limited |
The rate limit was exceeded; retry after the Retry-After period. |
Example
curl "https://api.eu.keenauth.com/v1/config-revisions?limit=20" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth config revisions list --limit 20