# JobClient.submit

```python
def JobClient.submit(
  job_name: str,
  root_task_or_tasks: Task | list[Task],
  cluster: ClusterSlugLike | list[ClusterSlugLike] | None = None,
  max_retries: int = 0
) -> Job
```

Submit a job.

## Parameters

**job\_name**

`str`

The name of the job.

**root\_task\_or\_tasks**

`Task | list[Task]`

The root task or root tasks for the job. Root tasks execute first and can submit subtasks to compose the workflow.

**cluster**

`ClusterSlugLike | list[ClusterSlugLike] | None`

The [cluster slug](/docs/workflows/concepts/clusters#managing-clusters) or cluster object for the root task. When submitting multiple root tasks, pass one cluster or a list with one cluster per task. If not provided, the default cluster is used.

**max\_retries**

`int`

The maximum number of [retries](/docs/workflows/concepts/tasks#retry-handling) for the root task or tasks. Defaults to 0.

```python title="Python"
from my_workflow import MyTask

job = job_client.submit(
    "my-job",
    MyTask(
      message="Hello, World!", 
      value=42,
      data={"key": "value"}
    ),
)
```
