[role="xpack"]
[testenv="platinum"]
[[ml-delete-job]]
= Delete {anomaly-jobs} API
++++
<titleabbrev>Delete jobs</titleabbrev>
++++

Deletes an existing {anomaly-job}.

[[ml-delete-job-request]]
== {api-request-title}

`DELETE _ml/anomaly_detectors/<job_id>`

[[ml-delete-job-prereqs]]
== {api-prereq-title}

* Requires the `manage_ml` cluster privilege. This privilege is included in the 
`machine_learning_admin` built-in role.
* Before you can delete a job, you must delete the {dfeeds} that are associated
with it. See <<ml-delete-datafeed>>.
* Before you can delete a job, you must close it (unless you specify the `force` 
parameter). See <<ml-close-job>>.

[[ml-delete-job-desc]]
== {api-description-title}

All job configuration, model state and results are deleted.

IMPORTANT:  Deleting an {anomaly-job} must be done via this API only. Do not
delete the job directly from the `.ml-*` indices using the {es} delete document
API. When {es} {security-features} are enabled, make sure no `write` privileges
are granted to anyone over the `.ml-*` indices.

It is not currently possible to delete multiple jobs using wildcards or a comma
separated list.

[[ml-delete-job-path-parms]]
== {api-path-parms-title}

`<job_id>`::
(Required, string)
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=job-id-anomaly-detection]

[[ml-delete-job-query-parms]]
== {api-query-parms-title}

`force`::
(Optional, Boolean) Use to forcefully delete an opened job; this method is
quicker than closing and deleting the job.

`wait_for_completion`::
(Optional, boolean) Specifies whether the request should return immediately or
wait until the job deletion completes. Defaults to `true`.

[[ml-delete-job-example]]
== {api-examples-title}

[source,console]
--------------------------------------------------
DELETE _ml/anomaly_detectors/total-requests
--------------------------------------------------
// TEST[skip:setup:server_metrics_job]

When the job is deleted, you receive the following results:

[source,console-result]
----
{
  "acknowledged": true
}
----

In the next example we delete the `total-requests` job asynchronously:

[source,console]
--------------------------------------------------
DELETE _ml/anomaly_detectors/total-requests?wait_for_completion=false
--------------------------------------------------
// TEST[skip:setup:server_metrics_job]

When `wait_for_completion` is set to `false`, the response contains the id
of the job deletion task:

[source,console-result]
----
{
  "task": "oTUltX4IQMOUUVeiohTt8A:39"
}
----
// TESTRESPONSE[s/"task": "oTUltX4IQMOUUVeiohTt8A:39"/"task": $body.task/]
