---
title: "Duplicate a job"
method: POST
path: "/v1/jobs/{jobId}/duplicate"
tags: ["Jobs"]
---

# Duplicate a job

`POST /v1/jobs/{jobId}/duplicate`

## Request

- Base URL: `https://api.workwing.io`
- URL: `https://api.workwing.io/v1/jobs/{jobId}/duplicate`
- Auth: HTTP bearer

Clone an existing job with its custom field values. The new job gets status T_PENDING with cleared timestamps.

Scopes: `create:jobs` and `read:jobs` (the source job is read, and the copy is read back).

## Path parameters

- `jobId` string, uuid, required

## Headers

- `Idempotency-Key` string, required

## Response `201`

Default Response

- object
  - `data` object, required: The new job
    - `id` string, uuid, required
    - `brand_id` string, uuid, required
    - `customer_id` string, uuid, required
    - `location_id` string, uuid, nullable, required
    - `template_id` string, uuid, nullable, required
    - `created_by_user_id` string, uuid, required
    - `resource_group_id` string, uuid, nullable, required
    - `parent_job_id` string, uuid, nullable, required: The project this job belongs to, if any.
    - `job_schedule_id` string, uuid, nullable, required: The recurring schedule that generated this job, if any.
    - `source_observation_id` string, uuid, nullable, required: The field observation this job was raised from, if any.
    - `job_number` string, nullable, required
    - `title` string, nullable, required
    - `kind` 'T_STANDARD' | 'T_PROJECT', required: `T_PROJECT` owns a pool of jobs; `T_STANDARD` is an ordinary job, which is also what each job in a project is.
    - `status` 'T_PENDING' | 'T_SCHEDULED' | 'T_ASSIGNED' | 'T_IN_PROGRESS' | 'T_ON_HOLD' | 'T_INCOMPLETE' | 'T_REBOOK' | 'T_COMPLETED' | 'T_CANCELLED' | 'T_FAILED', required
    - `status_notes` string, nullable, required
    - `status_reason_code` string, nullable, required
    - `priority` string, nullable, required: One of T_LOW, T_NORMAL, T_HIGH, T_URGENT.
    - `source` 'T_WEB' | 'T_API' | 'T_IMPORT', required: Where the job was created: in the app, through the API, or by a CSV import.
    - `notes` string, nullable, required
    - `scheduled_start` string, date-time, nullable, required
    - `scheduled_end` string, date-time, nullable, required
    - `scheduled_instance_date` string, date, nullable, required: For a job generated by a recurring schedule, the occurrence date it was generated for, `YYYY-MM-DD`.
    - `is_schedule_locked` boolean, required
    - `route_sequence` integer, nullable, required
    - `started_at` string, date-time, nullable, required
    - `completed_at` string, date-time, nullable, required
    - `completion_locked` boolean, required
    - `sla_response_due_at` string, date-time, nullable, required
    - `sla_resolution_due_at` string, date-time, nullable, required
    - `child_count` integer, required: For a project, how many jobs it has.
    - `child_completed_count` integer, required: For a project, how many of its jobs are complete.
    - `operator_form_data` object, nullable, required: Operator form answers, keyed by job type field id.
    - `resource_form_data` object, nullable, required: Resource form answers, keyed by job type field id.
    - `operator_form_snapshot` object, nullable, required: The job type's operator form as it stood when the job was created.
    - `resource_form_snapshot` object, nullable, required: The job type's resource form as it stood when the job was created.
    - `resource_form_progress` object, nullable, required: Where the resource has got to in a multi-step form.
    - `integration_responses` object, nullable, required: Responses recorded by integrations that ran on the job.
    - `external_references` object[], required
      - `provider` string, required
      - `type` string, required
      - `ref` string, required
      - `url` string, uri
    - `tracking_id` string, required: The id in the job's customer tracking link.
    - `verification_code` string, nullable, required
    - `created_at` string, date-time, nullable, required
    - `updated_at` string, date-time, nullable, required
    - `custom_fields` object, required: Custom field values keyed by field_key. Only fields that hold a value are listed.
    - `source_job_id` string, uuid, required: The job this one was copied from.
  - `meta` object, required
    - `request_id` string, required
    - `timestamp` string, date-time, required

---

[API](https://skmtc.dev/workwing/apis/workwing-api.md) · [All operations](https://skmtc.dev/workwing/apis/workwing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/workwing/apis/workwing-api/revisions/54bb14368a35?raw)
