---
agentTools:
  projectIndex: https://tidy.readme.io/llms.txt
---

# Update a Job

Updates a job to the values of the parameters passed. Any parameters not provided will be left unchanged.

Most people use this to update to-do lists.

The Update Jobs endpoint can be used for minor adjustments to the times a job can occur. Any start or end date changes must be to a date within 3 days of the current scheduled datetime or preferred datetime. Use the reschedule endpoint to make major changes including changing the scheduled or preferred date of the job.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Resources",
    "version": "1.6.2",
    "description": "Here are the endpoints available in the TIDY API:\n\n### Addresses\n  - POST   /address\n  - GET    /addresses\n  - GET    /addresses/{address_id}\n  - PUT    /addresses/{address_id}\n  - DELETE /addresses/{address_id}\n\n### Jobs\n  - POST /jobs\n  - GET  /jobs\n  - GET  /jobs/{job_id}\n  - PUT  /jobs/{job_id}\n  - POST  /jobs/{job_id}/cancel\n  \n### Booking Availbilities\n  - GET /booking-availabilities\n  \n### Pros\n  - POST /pros\n\n### To Do Lists\n  - GET /to-do-lists\n  \n### Guest Reservations\n  - GET    /guest-reservations\n  - GET    /guest-reservations/{guest_reservation_id}\n  - POST   /guest-reservations\n  - DELETE /guest-reservations/{guest_reservation_id}\n  \n### Issues\n  - GET    /issues\n  - GET    /issues/{issue_id}\n  - POST   /issues\n  - POST   /issues/{issue_id}/resolve\n  - DELETE /issues/{issue_id}",
    "contact": {
      "url": "tidy.com"
    }
  },
  "servers": [
    {
      "url": "https://api.tidy.com/api/v1",
      "description": ""
    }
  ],
  "paths": {
    "/jobs/{job_id}": {
      "put": {
        "summary": "Update a Job",
        "operationId": "put-jobs-job-id",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                },
                "examples": {
                  "Example": {
                    "value": {
                      "object": "job",
                      "id": 1,
                      "address_id": 1,
                      "to_do_list_id": 1,
                      "status": "scheduled",
                      "price": 9000,
                      "service_type_key": "regular_cleaning.one_hour",
                      "url": "https://app.tidy.com/example-url-1",
                      "is_partially_completed": false,
                      "cancelled_by": null,
                      "start_no_earlier_than": {
                        "date": "2020-01-21",
                        "time": "08:00"
                      },
                      "end_no_later_than": {
                        "date": "2020-01-23",
                        "time": "15:30"
                      },
                      "preferred_start_datetime": {
                        "date": "2020-01-22",
                        "time": "08:00"
                      },
                      "current_start_datetime": {
                        "date": "2020-01-22",
                        "time": "08:00"
                      },
                      "created_at": "2021-12-07T21:35:51Z"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Updates a job to the values of the parameters passed. Any parameters not provided will be left unchanged.\n\nMost people use this to update to-do lists.\n\nThe Update Jobs endpoint can be used for minor adjustments to the times a job can occur. Any start or end date changes must be to a date within 3 days of the current scheduled datetime or preferred datetime. Use the reschedule endpoint to make major changes including changing the scheduled or preferred date of the job.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "to_do_list_id": {
                    "type": "integer",
                    "description": "The id for the to-do list. Learn more: https://help.tidy.com/to-do-lists\n\nIf you pass a to-do list id:\nThe pro will see that list when doing the job. \n\nIf you pass this parameter with an null value:\nThe pro will not see any to-dos in this job.\n\nIf you don't pass this parameter at all:\nWe will not change the existing value for this job.",
                    "nullable": true
                  },
                  "start_no_earlier_than": {
                    "type": "object",
                    "description": "First time a job can be scheduled to start. The Update Jobs endpoint can be used for minor adjustments to the times a job can occur. Any start or end date changes must be to a date within 3 days of the current scheduled datetime or preferred datetime. Use the reschedule endpoint to make major changes including changing the scheduled or preferred date of the job.",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2020-01-21",
                        "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\"."
                      },
                      "time": {
                        "type": "string",
                        "description": "Formatted HH:MM, in intervals of 30 minutes. Example: \"08:00\" or \"13:30\" but NOT \"14:47\". "
                      }
                    }
                  },
                  "end_no_later_than": {
                    "type": "object",
                    "description": "Latest time a Job can be scheduled to finish. The Update Jobs endpoint can be used for minor adjustments to the times a job can occur. Any start or end date changes must be to a date within 3 days of the current scheduled datetime or preferred datetime. Use the reschedule endpoint to make major changes including changing the scheduled or preferred date of the job.",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2020-01-21",
                        "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\"."
                      },
                      "time": {
                        "type": "string",
                        "description": "Formatted HH:MM. Example: \"08:00\" or \"13:30\" but NOT \"14:47\". "
                      }
                    }
                  }
                }
              },
              "examples": {
                "Example 1 - Updating both backup times": {
                  "value": {
                    "to_do_list_id": 1,
                    "start_no_earlier_than": {
                      "date": "2020-01-21",
                      "time": "09:30"
                    },
                    "end_no_later_than": {
                      "date": "2020-01-21",
                      "time": "09:30"
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/job_id"
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/job_id"
        }
      ]
    }
  },
  "components": {
    "schemas": {
      "Job": {
        "title": "Job",
        "type": "object",
        "description": "# About Jobs\n\nThese are the requested jobs for a specific address. Jobs can be in a couple of statuses, and they can be scheduled for confirmed times or pending acceptance from a Pro.\n\n# More details about a Job\n\n| Attribute                     | Description                                                                                                                                                                                                                                                                                                                                                                                                          |\n| ------------------------      | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                      |\n| address_id                    | The Address to which the Job belongs to.                                                                                                                                                                                                                                                                                                                                                                         |\n| to_do_list_id                 | The ToDoList to which the Job belongs to. It's optional                                                                                                                                                                                                                                                                                                                                                          |\n| status                        | The status of the Job.<br>**scheduled** - The default value when a Job is created.<br>**in_progress** - When the Pro starts the Job.<br>**completed** - Job was completed with at least one Pro.<br>**failed** - When the Pro didn't complete the Job.                                                                                                                  |\n| price                         | Amount in cents Ex. 1000 -> $10.00.                                                                                                                                                                                                                                                                                                                                                                                  |\n| is_partially_completed        | True or False. When Job has more than one Pro and one Pro makerd the Job as completed.                                                                                                                                                                                                                                                                                                          |\n| cancelled_by                  | Who cancelled the Job.<br>**null** - When noone cancelled the Job.<br>**customer** - When the customer cancelled.<br>**provider** - When the Pro cancelled.                                                                                                                                                                                                                    |\n| service_type_key              | Service Type key of Job. This will identify the service_type and how many hours the job will have.<br>**regular_cleaning.one_hour** - The service_type is *regular_cleaning* with *one hour*.<br>**regular_cleaning.two_and_a_half_hours** - The service_type is *regular_cleaning* with *two and half hour*.<br>**regular_cleaning.four_hours** - The service_type is *regular_cleaning* with *four hours*.\n| url | This is a link to the `Job` in the TIDY console/app, with the ability to take further action.\n| current_start_datetime.date   | The current Date for the Job.                                                                                                                                                                                                                                                                                                                                                                                    |\n| current_start_datetime.time   | The current Time for the Job.                                                                                                                                                                                                                                                                                                                                                                                    |\n| preferred_start_datetime.date | The preferred Date used to try to create a Job.                                                                                                                                                                                                                                                                                                                                                                  |\n| preferred_start_datetime.time | The preferred Time used to try to create a Job.                                                                                                                                                                                                                                                                                                                                                                  |\n| start_no_earlier_than.date    | Earliest date a Job can be scheduled to start.                                                                                                                                                                                                                                                                                                                                                                   |\n| start_no_earlier_than.time    | Earliest time a Job can be scheduled to start.                                                                                                                                                                                                                                                                                                                                                                   |\n| end_no_later_than.date        | Latest date a Job can be scheduled to finish.                                                                                                                                                                                                                                                                                                                                                                    |\n| end_no_later_than.time        | Latest time a Job can be scheduled to finish. \n| created_at      | Date and time of when the `Job` was created. UTC and ISO formatted |                                                                                                                                                                                                                                                                                                                                                                   |\n",
        "x-examples": {
          "Job Example": {
            "object": "job",
            "id": 1,
            "address_id": 1,
            "to_do_list_id": 1,
            "status": "scheduled",
            "price": 9000,
            "is_partially_completed": false,
            "cancelled_by": null,
            "service_type_key": "regular_cleaning.one_hour",
            "url": "https://app.tidy.com/example-url-1234",
            "current_start_datetime": {
              "date": "2020-01-22",
              "time": "08:00"
            },
            "preferred_start_datetime": {
              "date": "2020-01-22",
              "time": "08:00"
            },
            "start_no_earlier_than": {
              "date": "2020-01-21",
              "time": "08:00"
            },
            "end_no_later_than": {
              "date": "2020-01-23",
              "time": "15:30"
            }
          }
        },
        "x-tags": [
          "models"
        ],
        "properties": {
          "object": {
            "type": "string",
            "default": "job",
            "description": "Type of object being returned",
            "example": "job",
            "x-plain-title": "Object Type"
          },
          "id": {
            "type": "integer",
            "description": "Unique identifier for the Job",
            "x-plain-title": "Job ID"
          },
          "address_id": {
            "example": 1,
            "type": "integer",
            "description": "Unique identifier for the Address this Job belongs to",
            "x-plain-title": "Address ID"
          },
          "to_do_list_id": {
            "example": 1,
            "type": "integer",
            "nullable": true,
            "description": "Unique identifier for the To-Do List.",
            "x-plain-title": "To-Do List ID"
          },
          "status": {
            "type": "string",
            "description": "The Status of the Job",
            "enum": [
              "scheduled",
              "in_progress",
              "completed",
              "cancelled",
              "failed"
            ],
            "x-plain-title": "Job Status"
          },
          "price": {
            "type": "integer",
            "description": "Price of the Job in cents. Ex. 1000 -> $10.00",
            "x-plain-title": "Job Price"
          },
          "is_partially_completed": {
            "type": "boolean",
            "example": true,
            "description": "True when Job has more than one Pro and one Pro makerd the Job as completed.",
            "x-plain-title": "Is Job Partially Completed?"
          },
          "cancelled_by": {
            "type": "string",
            "description": "Who cancelled the `Job`",
            "enum": [
              "customer",
              "pro",
              null
            ],
            "example": "customer",
            "nullable": true,
            "x-plain-title": "Job Cancelled By"
          },
          "service_type_key": {
            "type": "string",
            "description": "Service Type key of Job. This will identify the service_type and how many hours the job will have",
            "example": "regular_cleaning.one_hour",
            "enum": [
              "regular_cleaning.one_hour",
              "regular_cleaning.two_and_a_half_hours",
              "regular_cleaning.four_hours"
            ],
            "x-plain-title": "Job Service Type Key"
          },
          "url": {
            "type": "string",
            "description": "This is a link to the `Job` in the TIDY console/app. If it is past, it will direct you to details about the past `Job`. If the `Job` is scheduled or ongoing, it will take you to the `Job` with the ability to take further action.",
            "x-plain-title": "Job URL"
          },
          "current_start_datetime": {
            "type": "object",
            "description": "The current date and time that a Job is scheduled as a confirmed time with a Pro. In other words, some Pro said \"I am coming at this time\".",
            "required": [
              "date",
              "time"
            ],
            "x-plain-title": "Job Current Start Date and Time",
            "properties": {
              "date": {
                "type": "string",
                "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\".",
                "format": "date",
                "example": "2020-01-21",
                "x-plain-title": "Job Current Start Date"
              },
              "time": {
                "type": "string",
                "example": "08:00",
                "description": "Formatted HH:MM, in intervals of 30 minutes. Example: \"08:00\" or \"13:30\" but NOT \"14:47\".",
                "x-plain-title": "Job Current Start Time"
              }
            }
          },
          "preferred_start_datetime": {
            "type": "object",
            "description": "This is the preferred time a Pro could show up, if possible. We recommend adding the earliest possible time possible unless you have a strong preference. For example: If Monday 8:00am is the earliest a Pro could do the job, by Tuesday 11:00am is preferred, insert Tuesday 11:00am here.",
            "required": [
              "date",
              "time"
            ],
            "x-plain-title": "Job Preferred Start Date and Time",
            "properties": {
              "date": {
                "type": "string",
                "format": "date",
                "example": "2020-01-21",
                "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\".",
                "x-plain-title": "Job Preferred Start Date"
              },
              "time": {
                "type": "string",
                "example": "08:00",
                "description": "Formatted HH:MM, in intervals of 30 minutes. Example: \"08:00\" or \"13:30\" but NOT \"14:47\".",
                "x-plain-title": "Job Preferred Start Time"
              }
            }
          },
          "start_no_earlier_than": {
            "type": "object",
            "description": "This is the earliest a job can be scheduled for. For example: If Monday 8:00am is the earliest a Pro could do the job, insert that here.",
            "required": [
              "date",
              "time"
            ],
            "x-plain-title": "Job Start No Earlier Than Date and Time",
            "properties": {
              "date": {
                "type": "string",
                "example": "2020-01-21",
                "format": "date",
                "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\".",
                "x-plain-title": "Job Start No Earlier Than Date"
              },
              "time": {
                "type": "string",
                "description": "Formatted HH:MM, in intervals of 30 minutes. Example: \"08:00\" or \"13:30\" but NOT \"14:47\".",
                "x-plain-title": "Job Start No Earlier Than Time"
              }
            }
          },
          "end_no_later_than": {
            "type": "object",
            "description": "This is the latest time a job can be finished on the property. For example: If a Pro must absolutely be gone by Friday 5:00pm, insert that here.",
            "required": [
              "date",
              "time"
            ],
            "x-plain-title": "Job End No Later Than Date and Time",
            "properties": {
              "date": {
                "type": "string",
                "example": "2020-01-21",
                "format": "date",
                "description": "Formatted like YYYY-MM-DD. Example: \"2020-01-01\".",
                "x-plain-title": "Job End No Later Than Date"
              },
              "time": {
                "type": "string",
                "description": "Formatted HH:MM, in intervals of 30 minutes. Example: \"08:00\" or \"13:30\" but NOT \"14:47\".",
                "x-plain-title": "Job End No Later Than Time"
              }
            }
          },
          "created_at": {
            "type": "string",
            "example": "2022-01-17T21:47:51Z",
            "description": "Date and time of when the `Job` was created. UTC and ISO formatted",
            "x-plain-title": "Job Created At"
          }
        },
        "required": [
          "object",
          "id",
          "address_id",
          "to_do_list_id",
          "status",
          "price",
          "is_partially_completed",
          "cancelled_by",
          "service_type_key",
          "url",
          "current_start_datetime",
          "preferred_start_datetime",
          "start_no_earlier_than",
          "end_no_later_than",
          "created_at"
        ]
      }
    },
    "parameters": {
      "job_id": {
        "name": "job_id",
        "schema": {
          "type": "integer",
          "description": "Job ID to perform action"
        },
        "in": "path",
        "required": true
      }
    }
  },
  "tags": [
    {
      "name": "jobs"
    }
  ],
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "_id": {
    "buffer": {
      "0": 101,
      "1": 58,
      "2": 217,
      "3": 214,
      "4": 29,
      "5": 25,
      "6": 172,
      "7": 0,
      "8": 19,
      "9": 197,
      "10": 247,
      "11": 24
    }
  }
}
```