# How to call transform api using python

**URL:** <https://discuss.elastic.co/t/how-to-call-transform-api-using-python/287072>\
**Category:** Elasticsearch\
**Tags:** language-clients, transforms\
**Created:** [October 19, 2021, 10:19am UTC](https://discuss.elastic.co/t/how-to-call-transform-api-using-python/287072 "2021-10-19T10:19:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![marone](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/marone/32/87145_2.png) [@marone](https://discuss.elastic.co/u/marone)\
**Post date:** [October 19, 2021, 10:19am UTC](https://discuss.elastic.co/t/how-to-call-transform-api-using-python/287072/1 "2021-10-19T10:19:14Z")

</div>

I am trying to develop a python script since the max frequency parameter for transform api ranges from `1s` to `1h`.

I am using:

- python verison `3.6.8`
- Elasticsearch python api: `python -m pip install elasticsearch`

**UPDATE 1**

- ELK : `7.15.1`
- testing python scripts from windows 10

tried two versions of python script.

version 1:

```python
from elasticsearch import Elasticsearch
from elasticsearch._async.client.transform import TransformClient
import logging

logger = logging.getLogger( __name__ )
logging.basicConfig(filename="transform.log", level=logging.DEBUG, format='%(asctime)s %(message)s', datefmt='%d/%m/%Y %H:%M:%S')
logger.setLevel(logging.DEBUG)

# ES info
ES_HOST = "localhost"
ES_PORT = "9201"
try:
    es = Elasticsearch([{'host':ES_HOST,'port':ES_PORT}])
    logging.info(es)
except Exception as e:
    logging.fatal(e)

# start transform
try:
    tc = es.transform.TransformClient()
    start_transform_resp = tc.start_transform('poc_aggs')
    print(start_transform_resp)

except Exception as e:
    logging.fatal(e)

```

this one result in `'TransformClient' object has no attribute 'TransformClient'`.

version 2:

```python
from elasticsearch import Elasticsearch
from elasticsearch._async.client.transform import TransformClient
import logging

logger = logging.getLogger( __name__ )
logging.basicConfig(filename="transform.log", level=logging.DEBUG, format='%(asctime)s %(message)s', datefmt='%d/%m/%Y %H:%M:%S')
logger.setLevel(logging.DEBUG)

# ES info
ES_HOST = "localhost"
ES_PORT = "9201"
try:
    es = Elasticsearch([{'host':ES_HOST,'port':ES_PORT}])
    logging.info(es)
except Exception as e:
    logging.fatal(e)

# start transform
try:
    tc = TransformClient(es)
    start_transform_resp = tc.start_transform('poc_aggs')
    print(start_transform_resp)

except Exception as e:
    logging.fatal(e)

```

result in `sys:1: RuntimeWarning: coroutine 'start_transform' was never awaited` and the transform isn't executed in Elasticsearch.

what's the correct syntax please ? can't find an example to call the [TransformClient](https://elasticsearch-py.readthedocs.io/en/v7.11.0/xpack.html?highlight=transform#transform) using python.

---

<div class="post-metadata">

**Author:** ![marone](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/marone/32/87145_2.png) [@marone](https://discuss.elastic.co/u/marone)\
**Post date:** [October 26, 2021, 7:55am UTC](https://discuss.elastic.co/t/how-to-call-transform-api-using-python/287072/2 "2021-10-26T07:55:06Z")

</div>

I found it based on the doc, simply do:

```python
from elasticsearch import Elasticsearch
es = Elasticsearch(
            [{'host':ES_HOST,'port':ES_PORT}],
            http_auth=(USER, SECRET),
            #port=ES_PORT,
            use_ssl=True,
            verify_certs=True,
            client_certs=CA_CERT_CLIENT
        )
# start transform
es.transform.start_transform(transform_name, ...)
# create transform
es.transform.put_transform(transform_name, body)
# etc..

```

more Transform API [here](https://elasticsearch-py.readthedocs.io/en/v7.15.1/api.html?highlight=transform#transforms).

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 23, 2021, 7:55am UTC](https://discuss.elastic.co/t/how-to-call-transform-api-using-python/287072/3 "2021-11-23T07:55:53Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
