---
type: api
title: Get a watch
description: ## Required authorization
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/operation/operation-watcher-get-watch
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/operation/operation-watcher-get-watch
products:
  - Elasticsearch
---

# Get a watch

Availability: Generally available since 5.6

## Paths

- `GET` `/_watcher/watch/{id}`

#### Path parameters

- `id` (string) — required
  The watch identifier.

## Required authorization

- Cluster privileges: `monitor_watcher`

## Authentication

- Api key: `Authorization: <value>`
  Elasticsearch APIs support key-based authentication.
  You must create an API key and use the encoded value in the request header.
  For example:
  
  
  ```
  curl -X GET "${ES_URL}/_cat/indices?v=true" \
    -H "Authorization: ApiKey ${API_KEY}"
  ```
  
  To get API keys, use the `/_security/api_key` APIs.
- Basic: `Authorization: Basic <credentials>`
- Bearer: `Authorization: Bearer <token>`
  Elasticsearch APIs support the use of bearer tokens in the `Authorization` HTTP header to authenticate with the API.
  For examples, refer to [Token-based authentication services](https://www.elastic.co/guide/en/elasticsearch/reference/current/token-authentication-services.html)

## Response

`application/json`

- `found` (boolean)
- `_id` (string)
- `status` (object)
  - `actions` (object)
  - `last_checked` (union)
  - `last_met_condition` (union)
  - `state` (object)
    - `active` (boolean)
    - `timestamp` (union)
  - `version` (number)
  - `execution_state` (string)
- `watch` (object)
  - `actions` (map string to object)
    Map values (object)
    - `action_type` (enum)
      Values: `email`, `webhook`, `index`, `logging`, `slack`, `pagerduty`
    - `condition` (object)
      - `always` (object)
      - `array_compare` (map string to object · min properties: 1 · max properties: 1)
        Map values (object)
        - `path` (string)
      - `compare` (map string to string to oneOf · min properties: 1 · max properties: 1)
        Map values (map string to oneOf · min properties: 1 · max properties: 1)
      - `never` (object)
      - `script` (object)
        - `lang` (string · default: painless)
        - `params` (map string to object)
        - `source` (string)
        - `id` (string)
    - `foreach` (string)
    - `max_iterations` (number)
    - `name` (string)
    - `throttle_period` (string)
    - `throttle_period_in_millis` (number)
    - `transform` (object)
      - `chain` (object[]) — recursive
        Same fields as `transform` in `actions`
      - `script` (object)
        - `lang` (string · default: painless)
        - `params` (map string to object)
        - `source` (string)
        - `id` (string)
      - `search` (object)
        - `request` (object)
          - `body` (object)
            - `query` ({} Query)
              See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
          - `indices` (string[])
          - `indices_options` (object)
            - `allow_no_indices` (boolean)
              If false, the request returns an error if any wildcard expression, index alias, or `_all` value targets only
missing or closed indices. This behavior applies even if the request targets other open indices. For example,
a request targeting `foo*,bar*` returns an error if an index starts with `foo` but no index starts with `bar`.
            - `expand_wildcards` (string)
              Type of index that wildcard patterns can match. If the request can target data streams, this argument
determines whether wildcard expressions match hidden data streams. Supports comma-separated values,
such as `open,hidden`.

Supported values include:
  - `all`: Match any data stream or index, including hidden ones.
  - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
  - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
  - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
  - `none`: Wildcard expressions are not accepted.
              Values: `all`, `open`, `closed`, `hidden`, `none`
            - `ignore_unavailable` (boolean · default: false)
              If true, missing or closed indices are not included in the response.
            - `ignore_throttled` (boolean · default: true)
              If true, concrete, expanded or aliased indices are ignored when frozen.
          - `search_type` (enum)
            

Supported values include:
  - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
  - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.
            Values: `query_then_fetch`, `dfs_query_then_fetch`
          - `template` (object)
            - `explain` (boolean · default: false)
            - `id` (string)
              ID of the search template to use. If no source is specified,
this parameter is required.
            - `params` (map string to object)
            - `profile` (boolean · default: false)
            - `source` (string)
              An inline search template. Supports the same parameters as the search API's
request body. Also supports Mustache variables. If no id is specified, this
parameter is required.
          - `rest_total_hits_as_int` (boolean)
        - `timeout` (string)
    - `index` (object)
      - `index` (string)
      - `doc_id` (string)
      - `refresh` (enum)
        Values: `true`, `false`, `wait_for`
      - `op_type` (enum · default: index)
        

Supported values include:
  - `index`: Overwrite any documents that already exist.
  - `create`: Only index documents that do not already exist.
        Values: `index`, `create`
      - `timeout` (string · default: 60s)
      - `execution_time_field` (string)
    - `logging` (object)
      - `level` (string)
      - `text` (string)
      - `category` (string)
    - `email` (object)
      - `id` (string)
      - `bcc` (union string | string[])
      - `body` (object)
        - `html` (string)
        - `text` (string)
      - `cc` (union string | string[])
      - `from` (string)
      - `priority` (enum)
        Values: `lowest`, `low`, `normal`, `high`, `highest`
      - `reply_to` (union string | string[])
      - `sent_date` (union)
      - `subject` (string)
      - `to` (union string | string[])
      - `attachments` (map string to object)
        Map values (object · min properties: 1 · max properties: 1)
        - `http` (object)
          - `content_type` (string)
          - `inline` (boolean)
          - `request` (object)
            - `auth` (object)
              - `basic` (object)
                - `password` (string)
                - `username` (string)
            - `body` (string)
            - `connection_timeout` (string)
            - `headers` (map string to string)
            - `host` (string)
            - `method` (enum)
              Values: `head`, `get`, `post`, `put`, `delete`
            - `params` (map string to string)
            - `path` (string)
            - `port` (number)
            - `proxy` (object)
              - `host` (string)
              - `port` (number)
            - `read_timeout` (string)
            - `scheme` (enum)
              Values: `http`, `https`
            - `url` (string)
        - `reporting` (object)
          - `url` (string)
          - `inline` (boolean)
          - `retries` (number · default: 40)
          - `interval` (string · default: 15s)
          - `request` (object)
            Same fields as `request` in `http`
        - `data` (object)
          - `format` (enum)
            Values: `json`, `yaml`
    - `pagerduty` (object)
      - `account` (string)
      - `attach_payload` (boolean)
      - `client` (string)
      - `client_url` (string)
      - `contexts` (object[])
        - `href` (string)
        - `src` (string)
        - `type` (enum)
          Values: `link`, `image`
      - `description` (string)
      - `event_type` (enum · default: trigger)
        Values: `trigger`, `resolve`, `acknowledge`
      - `incident_key` (string)
      - `proxy` (object)
        - `host` (string)
        - `port` (number)
    - `slack` (object)
      - `account` (string)
      - `message` (object)
        - `attachments` (object[])
          - `author_icon` (string)
          - `author_link` (string)
          - `author_name` (string)
          - `color` (string)
          - `fallback` (string)
          - `fields` (object[])
            - `short` (boolean)
            - `title` (string)
            - `value` (string)
          - `footer` (string)
          - `footer_icon` (string)
          - `image_url` (string)
          - `pretext` (string)
          - `text` (string)
          - `thumb_url` (string)
          - `title` (string)
          - `title_link` (string)
          - `ts` (number)
        - `dynamic_attachments` (object)
          - `attachment_template` (object)
            Same fields as `attachments` in `message`
          - `list_path` (string)
        - `from` (string)
        - `icon` (string)
        - `text` (string)
        - `to` (string[])
    - `webhook` (object)
      - `auth` (object)
        - `basic` (object)
          - `password` (string)
          - `username` (string)
      - `body` (string)
      - `connection_timeout` (string)
      - `headers` (map string to string)
      - `host` (string)
      - `method` (enum)
        Values: `head`, `get`, `post`, `put`, `delete`
      - `params` (map string to string)
      - `path` (string)
      - `port` (number)
      - `proxy` (object)
        - `host` (string)
        - `port` (number)
      - `read_timeout` (string)
      - `scheme` (enum)
        Values: `http`, `https`
      - `url` (string)
  - `condition` (object)
    Same fields as `condition` in `actions`
  - `input` (object)
    - `chain` (object)
      - `inputs` (string to object[]) — recursive
        Same fields as `input` in `watch`
    - `http` (object)
      - `extract` (string[])
      - `request` (object)
        Same fields as `request` in `http`
      - `response_content_type` (enum)
        Values: `json`, `yaml`, `text`
    - `search` (object)
      - `extract` (string[])
      - `request` (object)
        Same fields as `request` in `search`
      - `timeout` (string)
    - `simple` (map string to object)
  - `metadata` (object)
  - `status` (object)
    - `actions` (object)
    - `last_checked` (union)
    - `last_met_condition` (union)
    - `state` (object)
      - `active` (boolean)
      - `timestamp` (union)
    - `version` (number)
    - `execution_state` (string)
  - `throttle_period` (string)
  - `throttle_period_in_millis` (number)
  - `transform` (object)
    Same fields as `transform` in `actions`
  - `trigger` (object)
    - `schedule` (object)
      - `timezone` (string)
      - `cron` (string)
      - `daily` (object)
        - `at` (union oneOf[])
          - **string**
          - **{ hour, minute }**
            - `hour` (number[])
            - `minute` (number[])
      - `hourly` (object)
        - `minute` (number[])
      - `interval` (string)
      - `monthly` (union oneOf)
        `object` or `object[]`
        - `at` (string[])
        - `on` (number[])
      - `weekly` (union oneOf)
        `object` or `object[]`
        - `at` (string[])
        - `on` (enum[])
          Values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`
      - `yearly` (union oneOf)
        `object` or `object[]`
        - `at` (string[])
        - `int` (enum[])
          Values: `january`, `february`, `march`, `april`, `may`, `june`, `july`, `august`, `september`, `october`, `november`, `december`
        - `on` (number[])
- `_primary_term` (number)
- `_seq_no` (number)
- `_version` (number)
## Code examples

#### Console

```console
GET _watcher/watch/my_watch
```

#### JavaScript

```javascript
const response = await client.watcher.getWatch({
  id: "my_watch",
});
```

#### Python

```python
resp = client.watcher.get_watch(
    id="my_watch",
)
```

#### curl

```curl
curl -X GET "$ELASTICSEARCH_URL/_watcher/watch/my_watch" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY"
```

#### Java

```java
client.watcher().getWatch(g -> g
    .id("my_watch")
);
```

#### PHP

```php
$resp = $client->watcher()->getWatch([
    "id" => "my_watch",
]);
```

#### Ruby

```ruby
response = client.watcher.get_watch(
  id: "my_watch"
)
```

## Response examples

#### Get watch response example1

A successful response from `GET _watcher/watch/my_watch`.

```json
{
  "found": true,
  "_id": "my_watch",
  "_seq_no": 0,
  "_primary_term": 1,
  "_version": 1,
  "status": { 
    "version": 1,
    "state": {
      "active": true,
      "timestamp": "2015-05-26T18:21:08.630Z"
    },
    "actions": {
      "test_index": {
        "ack": {
          "timestamp": "2015-05-26T18:21:08.630Z",
          "state": "awaits_successful_execution"
        }
      }
    }
  },
  "watch": {
    "input": {
      "simple": {
        "payload": {
          "send": "yes"
        }
      }
    },
    "condition": {
      "always": {}
    },
    "trigger": {
      "schedule": {
        "hourly": {
          "minute": [0, 5]
        }
      }
    },
    "actions": {
      "test_index": {
        "index": {
          "index": "test"
        }
      }
    }
  }
}
```

