# JobClient.query

```python
def JobClient.query(
    temporal_extent: TimeIntervalLike | IDIntervalLike,
    automation_ids: UUID | list[UUID] | None = None,
    job_states: JobState | list[JobState] | None = None,
    name: str | None = None,
    task_states: TaskState | list[TaskState] | None = None,
    clusters: Cluster | str | list[Cluster | str] | None = None,
) -> list[Job]
```

Query jobs in the specified interval.

## Parameters

**temporal\_extent**

`TimeIntervalLike | IDIntervalLike`

required: true

The temporal extent to filter jobs by. If an `IDInterval` is given, jobs are filtered by their job id instead of their creation time.
It can be specified in the following ways:

* TimeInterval: interval -> Use the time interval as its given
* DatetimeScalar: \[time, time] -> Construct a TimeInterval with start and end time set to the given
  value and the end time inclusive
* tuple of two DatetimeScalar: \[start, end) -> Construct a TimeInterval with the given start and
  end time
* `IDInterval`: interval -> Use the ID interval as its given
* tuple of two UUIDs: \[start, end) -> Construct an `IDInterval` with the given start and end id
* tuple of two strings: \[start, end) -> Construct an `IDInterval` with the given start and end id
  parsed from the strings

**automation\_ids**

`UUID | list[UUID] | None`

One automation ID or a list of automation IDs to filter jobs by. If not provided, jobs from all automations are returned.

**job\_states**

`JobState | list[JobState] | None`

A job state or list of job states to filter by. If specified, only jobs in any of the given states are returned.

**name**

`str | None`

A name to filter jobs by. If specified, only jobs with a matching name are returned. The name is matched using case-insensitive fuzzy search.

**task\_states**

`TaskState | list[TaskState] | None`

A task state or list of task states to filter jobs by. If specified, only jobs that have at least one task in any of the given states are returned. Useful for finding jobs with [optional](/docs/workflows/concepts/tasks#optional-tasks) task failures, e.g. `task_states=TaskState.FAILED_OPTIONAL`.

**clusters**

`Cluster | str | list[Cluster | str] | None`

A cluster or list of clusters to filter jobs by. Pass actual cluster slugs or cluster objects. `None` and `[]` apply no cluster filter. Empty string cluster slugs are not accepted.

## Returns

A list of jobs.

```python title="Python"
jobs = job_client.query(("2025-01-01", "2025-02-01"))
jobs_on_cluster = job_client.query(("2025-01-01", "2025-02-01"), clusters="production")
```
