---
title: "List job executions"
method: GET
path: "/jobs/{jobId}/executions"
tags: ["jobs"]
---

# List job executions

`GET /jobs/{jobId}/executions`

## Request

- Base URL: `https://api.blaxel.ai/v0`
- URL: `https://api.blaxel.ai/v0/jobs/{jobId}/executions`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/oauth/authorize`
    - Client credentials
    - Token URL: `/oauth/token` scopes: `jobs:list`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/blaxel/apis/blaxel-control-plane/docs/jobs/:jobId/executions/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns executions for a batch job. Starting with API version 2026-04-28 the response is wrapped in `{data, meta}` and supports cursor pagination via the `cursor` and `limit` query parameters; older versions keep the legacy offset/limit contract and return a bare array.

## Path parameters

- `jobId` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `cursor` string
- `sort` 'createdAt:desc' | 'createdAt:asc' | 'name:asc' | 'name:desc'
- `q` string

## Response `200`

successful operation

- JobExecutionList: Cursor-paginated list of job executions. Returned starting with API version 2026-04-28; older API versions keep the legacy offset-based contract and return a bare array.
  - `data` JobExecution[]: Page of job executions.
    - `metadata` JobExecutionMetadata, required: Job execution metadata
      - `cluster` string: Cluster ID
      - `completedAt` string: Completion timestamp
      - `createdAt` string: Creation timestamp
      - `deletedAt` string: Deletion timestamp
      - `expiredAt` string: Expiration timestamp
      - `id` string: Execution ID
      - `job` string: Job name
      - `startedAt` string: Start timestamp
      - `updatedAt` string: Last update timestamp
      - `workspace` string: Workspace ID
    - `spec` JobExecutionSpec, required: Job execution specification
      - `envOverride` object: Environment variable overrides (if provided for this execution, values are masked with ***)
      - `memoryOverride` integer: Memory override in megabytes (if provided for this execution)
      - `parallelism` integer: Number of parallel tasks
      - `tasks` JobExecutionTask[]: List of execution tasks
        - `conditions` JobExecutionTaskCondition[]: Task conditions
          - `executionReason` string: Execution reason
          - `message` string: Condition message
          - `reason` string: Condition reason
          - `severity` string: Condition severity
          - `state` string: Condition state
          - `type` string: Condition type
        - `metadata` JobExecutionTaskMetadata: Job execution task metadata
          - `completedAt` string: Completion timestamp
          - `createdAt` string: Creation timestamp
          - `name` string: Task name
          - `scheduledAt` string: Scheduled timestamp
          - `startedAt` string: Start timestamp
          - `updatedAt` string: Last update timestamp
        - `spec` JobExecutionTaskSpec: Job execution task specification
          - `maxRetries` integer: Maximum number of retries
          - `timeout` string: Task timeout duration
        - `status` 'unspecified' | 'pending' | 'reconciling' | 'failed' | 'succeeded' | 'running' | 'cancelled': Job execution task status
      - `timeout` integer: Job timeout in seconds (captured at execution creation time)
    - `stats` JobExecutionStats: Job execution statistics
      - `cancelled` integer: Number of cancelled tasks
      - `failure` integer: Number of failed tasks
      - `retried` integer: Number of retried tasks
      - `running` integer: Number of running tasks
      - `success` integer: Number of successful tasks
      - `total` integer: Total number of tasks
    - `status` 'queued' | 'pending' | 'running' | 'cancelling' | 'cancelled' | 'failed' | 'succeeded' | 'timeout': Job execution status
    - `tasks` JobExecutionTask[]: List of execution tasks
      - `conditions` JobExecutionTaskCondition[]: Task conditions
        - `executionReason` string: Execution reason
        - `message` string: Condition message
        - `reason` string: Condition reason
        - `severity` string: Condition severity
        - `state` string: Condition state
        - `type` string: Condition type
      - `metadata` JobExecutionTaskMetadata: Job execution task metadata
        - `completedAt` string: Completion timestamp
        - `createdAt` string: Creation timestamp
        - `name` string: Task name
        - `scheduledAt` string: Scheduled timestamp
        - `startedAt` string: Start timestamp
        - `updatedAt` string: Last update timestamp
      - `spec` JobExecutionTaskSpec: Job execution task specification
        - `maxRetries` integer: Maximum number of retries
        - `timeout` string: Task timeout duration
      - `status` 'unspecified' | 'pending' | 'reconciling' | 'failed' | 'succeeded' | 'running' | 'cancelled': Job execution task status
  - `meta` PaginationMeta: Pagination metadata returned alongside a page of listing results. Always present on listing endpoints starting with API version 2026-04-28.
    - `hasMore` boolean: True when more pages are available beyond the current one.
    - `nextCursor` string: Opaque cursor to pass back as the `cursor` query param for the next page. Empty when there are no more pages.
    - `total` integer: Total number of items in the workspace, ignoring the current page's filters. Lets the UI render "page X of Y" without walking the cursor chain. Computed from the hash-only metadata.workspace GSI count, so search (`q`) does not narrow it.

## Other responses

- `400`: bad request
- `500`: internal server error

---

[API](https://skmtc.dev/blaxel/apis/blaxel-control-plane.md) - [All operations](https://skmtc.dev/blaxel/apis/blaxel-control-plane/llms.txt) - [OpenAPI document](https://skmtc.dev/blaxel/apis/blaxel-control-plane/revisions/dfa264bc72ee?raw)
