이벤트 목록 조회
GET /v1/events · 권한 events:read
환경의 이벤트를 오래된 순서대로 반환합니다. 각 이벤트는 웹훅으로 전달되는 것과 같은 id를 가진 같은 문서입니다. 이벤트는 모든 요금제에서 30일 동안 보관됩니다.
시스템에서 웹훅을 받을 수 없거나 장애 후 누락된 이벤트를 채워야 할 때 이 엔드포인트를 사용하십시오. 마지막으로 처리한 next_cursor를 저장해 두고 그 지점부터 이어서 조회하십시오.
환경은 항상 API 키에서 결정됩니다. 환경을 지정하는 매개변수는 없습니다.
요청
| 매개변수 | 위치 | 필수 | 설명 |
|---|---|---|---|
after |
query | 아니요 | 이전 응답의 next_cursor, 또는 지금부터 기록되는 이벤트만 받으려면 latest. 지정하지 않으면 보관 중인 가장 오래된 이벤트부터 목록이 시작됩니다. |
types |
query | 아니요 | 쉼표로 구분한 이벤트 유형, 최대 20개(예: user.created,user.deleted). 지정하지 않으면 모든 유형이 반환됩니다. |
org_id |
query | 아니요 | 이 조직(org_…)의 이벤트만 반환합니다. |
limit |
query | 아니요 | 페이지 크기, 1~100. 기본값 20. |
payload |
query | 아니요 | thin(기본값) 또는 full. full은 users:read 권한도 필요합니다. 전체 페이로드를 사용할 수 있을 때까지 full은 thin 페이로드를 반환합니다. |
purpose |
query | 아니요 | tail(기본값) 또는 webhooks_listen. webhooks_listen은 development 및 staging 환경에서만 허용됩니다. |
응답
200 OK:
| 필드 | 설명 |
|---|---|
data |
순서대로 정렬된 이벤트. 각 이벤트에는 환경 안에서 증가하는 seq가 있습니다. |
next_cursor |
항상 포함됩니다. data가 비어 있더라도 다음 요청에서 after로 전달하십시오. |
has_more |
뒤에 이벤트가 더 있으면 true입니다. 이 경우 바로 다시 요청하십시오. false이면 다시 폴링하기 전에 5~60초 기다리십시오. |
커서는 types 또는 org_id에 따라 달라지지 않습니다. 필터를 바꾸어도 같은 위치에서 이어서 조회할 수 있습니다. 커서는 발급된 환경에서만 동작합니다.
{
"data": [
{
"id": "evt_01j9xk3m7q8r2s4t6v8w0y2z4a",
"type": "connection.deleted",
"schema_version": 1,
"environment_id": "env_01j9xk3m7q8r2s4t6v8w0y2z4e",
"occurred_at": "2026-11-03T08:15:42.120Z",
"recorded_at": "2026-11-03T08:15:42.140Z",
"seq": 4182,
"data": {
"object": {"id": "conn_01j9xk3m7q8r2s4t6v8w0y2z4f", "status": "deleted"},
"object_version": 2
},
"context": {"actor": {"type": "system"}, "request_id": "0192a6c1-7d3e-7a10-9b2c-3d4e5f607182"}
}
],
"next_cursor": "eyJ2IjoxfQ.c2lnbmF0dXJl",
"has_more": false
}
예시: 새 이벤트 폴링
cursor=latest
while true; do
page=$(curl -sS -G https://api.keenauth.com/v1/events \
-H "Authorization: Bearer $KEENAUTH_API_KEY" \
--data-urlencode "after=$cursor" --data-urlencode "limit=100")
echo "$page" | jq -c '.data[]'
cursor=$(echo "$page" | jq -r '.next_cursor')
[ "$(echo "$page" | jq -r '.has_more')" = "true" ] || sleep 10
done
CLI에서도 keenauth events tail로 같은 작업을 수행할 수 있습니다.
오류
모든 오류는 안정적인 code를 포함한 application/problem+json 본문으로 반환됩니다.
| HTTP | code |
발생 조건 |
|---|---|---|
| 400 | invalid_cursor |
커서 형식이 잘못되었거나 다른 환경에서 발급되었습니다. |
| 401 | unauthenticated |
API 키가 없거나, 잘못되었거나, 폐기되었습니다. |
| 403 | insufficient_permissions |
키에 events:read 권한이 없거나, users:read 권한 없이 payload=full을 요청했습니다. |
| 403 | test_feature_not_in_production |
프로덕션 환경에서 purpose=webhooks_listen을 요청했습니다. |
| 422 | validation_failed |
매개변수가 잘못되었거나 반복되었습니다. errors[].pointer에 해당 매개변수가 표시됩니다. |
| 429 | rate_limited |
요청 한도를 초과했습니다. Retry-After를 따르십시오. |
| 503 | service_unavailable |
의존 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |
개인정보
이 엔드포인트는 이벤트라는 개인정보를 다룹니다. KeenAuth API의 개인정보에서 저장되는 항목, 보관 기간, 삭제 방식을 확인하십시오. 어떤 필드에도 민감정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마십시오.