---
title: "List job history"
method: GET
path: "/admin/jobs"
tags: ["Jobs"]
---

# List job history

`GET /admin/jobs`

## Request

- Base URL: `https://h2ogpte.genai.h2o.ai/api/v1`
- URL: `https://h2ogpte.genai.h2o.ai/api/v1/admin/jobs`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/h2o/apis/h2ogpte-rest-api/docs/admin/jobs/get.ts> (a function with typed inputs; its response is checked against the schema)

Admin-only. Returns the persistent job history from Postgres (all users), newest first, keyset-paginated. Pass back next_cursor_created_at and next_cursor_id from a previous response to continue. Defaults to the last 7 days when created_after is omitted; pass an earlier created_after to read further back. How far back data exists is bounded by the retention setting (telemetry_retention_days, at most 365 days). Includes cleared (deleted) jobs, marked by deleted_at.

## Query parameters

- `cursor_created_at` string, date-time
- `cursor_id` string
- `limit` integer
- `status` string[]
- `kind` string
- `user_id` string
- `collection_id` string
- `created_after` string, date-time

## Response `200`

Successful operation

- JobHistoryListResponse
  - `jobs` JobHistoryDetails[], required
    - `id` string, required
    - `name` string, required
    - `kind` string, required: Raw job kind string (not enumerated — historical kinds are preserved verbatim).
    - `username` string, required: Owning user's username, or "SYSTEM" for system-initiated jobs.
    - `user_id` string, nullable
    - `status` 'queued' | 'running' | 'completed' | 'failed' | 'canceled' | 'timeout' | 'stale' | 'unknown', required: Lifecycle status.
    - `passed` number, float, required
    - `failed` number, float, required
    - `progress` number, float, required
    - `errors` string[], required
    - `collection_id` string, nullable
    - `collection_name` string, nullable: Name of the collection the job operated on (joined; null if none or deleted).
    - `canceled_by` string, nullable
    - `cancel_reason` string, nullable
    - `date` string, date-time, required: created_at.
    - `last_update_date` string, date-time, required
    - `started_at` string, date-time, nullable
    - `finished_at` string, date-time, nullable
    - `deleted_at` string, date-time, nullable: Set when the job was cleared from the tray; the audit row is kept.
    - `duration` string, required
    - `duration_seconds` number, double, required
    - `completed` boolean, required
    - `canceled` boolean, required
  - `next_cursor_created_at` string, date-time, nullable
  - `next_cursor_id` string, nullable

## Other responses

- `401`: Unauthorized - Invalid or missing API key
- `403`: Caller is not an admin.
- `500`: Internal server error
- `default`: Unexpected error

---

[API](https://skmtc.dev/h2o/apis/h2ogpte-rest-api.md) - [All operations](https://skmtc.dev/h2o/apis/h2ogpte-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/h2o/apis/h2ogpte-rest-api/revisions/a82a117320f4?raw)
