> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.hellotracks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Edit Jobs

> Use this endpoint to update one or multiple jobs.

### REQUEST

```shell theme={null}
POST https://api.hellotracks.com/api/editjobs

{
	data: {
		jobs: {
			"<job_id_1>" : {
				"<attr_1>" : value,
				   ...
				"<attr_n>" : value,
			},
			"<job_id_2>" : job_2,
			   ...
			"<job_id_n>" : job_n
		},
		notify: boolean,
		sendRouteChange: boolean (optional)
	}
}
```

Compare [Job API Object](../job-object) to see all modifiable attributes (all which are marked as `RW`). You are not able to change the `id` of a job, but most job properties are modifiable.

**Special Attributes:**

* Use `worker` field with a username to assign/reassign a job
* Use `receiverUid` field with a UID to assign/reassign a job
* Set `receiverUid` to empty string `""` to unassign a job
* Job templates can be edited using the `tpl-` prefix in the job ID
* Use `customFields` to replace all custom fields on a job: `[{"key":"...","val":"..."}]`

### Body

<ParamField body="jobs" type="object" required>
  Object, set field name to the id of the job to edit. The value is an object with one or multiple fields.
  Follow the schema of the Job API object for the value object.
  For custom fields inside each job object:

  * `customFields`: array of key/value objects, for example `[{ "key": "PO_Number", "val": "PO-2026-1234" }]` (this clears and replaces all existing custom fields for that job).
</ParamField>

<RequestExample>
  ```bash Example Request (custom fields) theme={null}
  curl -X POST https://api.hellotracks.com/api/editjobs \
  --header 'API-Key: ...' -d \
  '
  {
      "data": {
          "jobs": {
              "65e6d8f2abc1234567890001": {
                  "customFields": [
                      { "key": "PO_Number", "val": "PO-2026-1234" },
                      { "key": "Department", "val": "Facilities" }
                  ]
              }
          },
          "notify": false
      }
  }
  '
  ```
</RequestExample>

<ParamField body="notify" type="boolean" default={true}>
  Set `notify:true` if you want to generate a notification in case the progress status of this job changed (e.g., job completion, rejection, check-in/out).
  To omit creating notifications for this job modification, set `notify:false`.
  The `notify` attribute is optional and defaults to `true`.
</ParamField>

<ParamField body="sendRouteChange" type="boolean" default={false}>
  If true and the job is assigned with day set to today, notifies the assignee immediately of the route change. The list of jobs will be updated automatically on their device.
</ParamField>

<Note>
  **Permissions:** Workers can only edit jobs for today unless the `workers_edit_job` setting is enabled. Changes to the `day` field by workers require this permission.
</Note>

<Snippet file="jobs-response.mdx" />
