---
title: "List finished jobs"
method: GET
path: "/api/{projectId}/jobs/history"
tags: ["Jobs"]
---

# List finished jobs

`GET /api/{projectId}/jobs/history`

## Request

- Base URL: `https://studio.edgeimpulse.com/v1`
- URL: `https://studio.edgeimpulse.com/v1/api/{projectId}/jobs/history`
- Auth: one of:
  - API key in header `x-api-key`
  - API key in cookie `jwt`
  - API key in header `x-jwt-token`
  - OAuth 2
    - Authorization code: `/v1/oauth/authorize`
    - Client credentials
    - Implicit: `/v1/oauth/authorize`
    - Password
    - Token URL: `/v1/oauth/token`
- TypeScript: <https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/docs/api/:projectId/jobs/history/get.ts> (a function with typed inputs; its response is checked against the schema)

Get all finished jobs for this project

## Path parameters

- `projectId` integer, required

## Query parameters

- `startDate` string, date-time
- `endDate` string, date-time
- `limit` integer
- `offset` integer
- `rootOnly` boolean

## Response `200`

OK

- ListJobsResponse
  - `success` boolean, required: Whether the operation succeeded
  - `error` string: Optional error description (set if 'success' was false)
  - `jobs` Job[], required: Active jobs
    - `id` integer, required: Job id, use this to refer back to the job. The web socket API also uses this ID.
    - `category` string, required: User-friendly category (e.g. "Training model")
    - `categoryKey` string, required: Machine-readable category (e.g. "learn-train-studio-wrapper")
    - `key` string, required: External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to 'keras-192' for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for this ID and re-attach.
    - `created` string, date-time, required: When the job was created.
    - `started` string, date-time: When the job was started.
    - `finished` string, date-time: When the job was finished.
    - `finishedSuccessful` boolean: Whether the job finished successfully.
    - `jobNotificationUids` integer[], required: The IDs of users who should be notified when a job is finished.
    - `additionalInfo` string: Additional metadata associated with this job.
    - `computeTime` number: Job duration time in seconds from start to finished, measured by k8s job watcher.
    - `createdByUser` CreatedUpdatedByUser
      - `id` integer, required
      - `name` string, required
      - `username` string, required
      - `photo` string
    - `categoryCount` integer: Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc. job was in the UI.
    - `metadata` object: Structured job metadata
  - `totalJobCount` integer, required

---

[API](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api.md) - [All operations](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/llms.txt) - [OpenAPI document](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/revisions/e2a976d38427?raw)
