[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}

* If {es} {security-features} are enabled, you must have `manage_ml` or `manage`
cluster privileges to use this API. See
{stack-ov}/security-privileges.html[Security privileges].

[[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.

Before you can delete a job, you must delete the {dfeeds} that are associated
with it. See <<ml-delete-datafeed,Delete {dfeeds-cap}>>. Unless the `force`
parameter is used the job must be closed before it can be deleted.

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) Identifier for the {anomaly-job}.

[[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}

The following example deletes the `total-requests` job:

[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/]