---
title: "List CI events"
method: GET
path: "/api/v1alpha/events"
tags: ["Events"]
---

# List CI events

`GET /api/v1alpha/events`

## Request

- Base URL: `{{ base_url }}`
- URL: `{{ base_url }}/api/v1alpha/events`
- Auth: none declared

Returns CI events sorted by id DESC (most recent first), with cursor-based pagination and optional filters. Events are kept for 90 days.

## Query parameters

- `target_branch` string
- `pr` integer
- `event` string
- `cursor` integer
- `limit` integer

## Response `200`

Events retrieved successfully

- CIEventsResponse
  - `rows` CIEvent[], required
    - `id` integer, required: Auto-increment primary key; increases with time
    - `time` string, date-time, required: When the event was recorded
    - `event` 'merge_requested' | 'merge_pending' | 'merge_succeeded' | 'merge_failed' | 'merge_expired' | 'merge_cleared' | 'merge_restored' | 'build_requested' | 'build_started' | 'build_start_failed' | 'build_cancelled' | 'retry_requested' | 'sha_authorized' | 'frozen' | 'unfrozen' | 'dev_deploy_requested' | 'update_triggered' | 'target_moved' | 'deploy_started' | 'deploy_start_failed' | 'deploy_finished' | 'deploy_failure_alerted' | 'deploy_status_failed' | 'reviewer_assigned' | 'reviewer_assign_failed' | 'status_post_failed' | 'ci_started' | 'update_failed' | 'namespace_created' | 'namespace_deleted' | 'service_added' | 'service_edited' | 'service_deleted' | 'namespace_expired_cleanup', required
    - `target_branch` string, nullable, required: Fully-qualified watched branch (e.g. hail-is/hail:main); null for branch-independent events
    - `pr_number` integer, nullable, required: PR number; null for branch-level events
    - `username` string, nullable, required: Who triggered the event; null when CI acted on its own
    - `batch_id` integer, nullable, required: Related batch
    - `source_sha` string, nullable, required: PR source SHA, or the SHA an event refers to (e.g. sha_authorized)
    - `target_sha` string, nullable, required: Target branch SHA
    - `previous_sha` string, nullable, required: Previous target branch SHA (target_moved)
    - `namespace` string, nullable, required: Namespace (namespace and service events)
    - `service` string, nullable, required: Service (service events)
    - `merge_uuid` string, nullable, required: GitHub async merge request id
    - `message` string, nullable, required: Human-readable summary and free-form detail such as error output
  - `cursor` integer, nullable, required: ID of the last row; pass as `cursor` to fetch the next page. Null when has_more is false.
  - `has_more` boolean, required: Whether more rows exist beyond this page

## Other responses

- `400`: Invalid query parameter
- `401`: Unauthorized
- `403`: Forbidden - requires developer privileges

## Changes

- **2026-10-24** `a60fc5e80878`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hail-is/apis/hail-ci-service/changes/api/v1alpha/events/get.md)

---

[API](https://skmtc.dev/hail-is/apis/hail-ci-service.md) - [All operations](https://skmtc.dev/hail-is/apis/hail-ci-service/llms.txt) - [OpenAPI document](https://skmtc.dev/hail-is/apis/hail-ci-service/revisions/a60fc5e80878?raw)
