# Начало работы с API Botman

Source: https://docs.botman.pro/a/215-nachalo-raboty-s-api-botman

API позволяет через запросы к самому Botman влиять на работу сервиса/бота для пользователей, например:

1. Создавать/Изменять/Удалять переменные, метки
2. Изменять значение полей для конкретного пользователя
3. Запускать/останавливать бота для пользователя
4. Отправлять пользователя на конкретный шаг
5. Получать статус подключения бота
6. Запрашивать информацию о сценариях

REST API BotMan работает по протоколу HTTP.

Все ответы приходят в виде JSON структур.

Список всех методов можно найти в Open API [документации](https://api.botman.pro/webjars/swagger-ui/index.html?operationsSorter=alpha&tagsSorter=alpha&configUrl=/v3/api-docs/swagger-config).

---

## **💬 Обсудить с командой или задать вопрос**

Перейдите в [наш чат для разработчиков](https://t.me/+SQ7oUejbpXw4Njg6), чтобы получить помощь, поделиться опытом или предложить улучшения.

---

## Начало работы:

Для работы с API необходимо авторизоваться - дать понять сервису с кем именно он работает, для этого каждому пользователю мы даём ключ для работы с API, получить его можно [здесь](https://app.botman.pro/app/integration/extensions).

![](https://storage.yandexcloud.net/botman-knowledge-prod/kb/6aec5304d3ac9dc31d82ccf6/60e4d82599ea9a4b656b05ffa9288ff5b8928f10d9e035e94cbf0a9d5c0d481b.png)

![](https://storage.yandexcloud.net/botman-knowledge-prod/kb/6aec5304d3ac9dc31d82ccf6/a23debdbb1d2a9446158d29e6c05fbafe1f02764061887ad43eab3297de0e6de.png)

Для выполнения запросов к API необходимо использовать API-ключ.

## **Способы передачи ключа:**

В заголовке запроса:

`X-Api-Key: <Ваш API-ключ>`

В параметре строки запроса:

`https://api.botman.pro/endpoint?apiKey=<Ваш API-ключ>`

API-ключ можно сгенерировать в Личном кабинете:

1. Перейдите в раздел "Интеграции"
2. Нажмите кнопку "Подключить API"

**Базовый URL**

Все ссылки на запросы к API начинаются с URL сервиса:

`https://api.botman.pro`

Пример запроса на получение списка переменных на Python:

**`import`** `requests`\
`response =` **`requests`**`.`**`get`**`(`\
`"https://api.botman.pro/public/api/v1/customFields",  # URL из документации`\
`headers={"x-api-key": "54f5821489090eb93249f68eef0e43ca"},  # Ваш токен`\
`)`\
**`print`**`(response.json)`

Пример ответа

`[`\
`{`\
`'id': '665223a1f276c443485383d4',`\
`'name': 'temp_string',`\
`'description': '',`\
`'active': True,`\
`'createdDate': '2024-05-25T17:45:05.807+00:00',`\
`'type': 'TEXT'`\
`}`\
`]`

## Основные разделы API

## CRM Service API

API для работы с пользовательскими данными, пользовательскими и системными полями, а также тегами.

**Пользовательские поля** (Custom Fields):

- `GET /public/api/v1/customFields` — получить список всех созданных пользовательских полей.
- `POST /public/api/v1/users/{id}/customFields` — установить значение пользовательского поля для пользователя.
- `DELETE /public/api/v1/users/{id}/customFields` — удалить значение пользовательского поля для пользователя.

**Системные поля** (System Fields):

- `POST /public/api/v1/users/{id}/fields` — установить значение системного поля для пользователя.
- `DELETE /public/api/v1/users/{id}/fields` — удалить значение системного поля для пользователя.

**Теги**:

- `GET /public/api/v1/tags` — получить список всех тегов.
- `POST /public/api/v1/users/{id}/tags` — добавить тег пользователю.
- `DELETE /public/api/v1/users/{id}/tags` — удалить тег у пользователя.

**Работа с пользователями**:

- `GET /public/api/v1/users/{id}/` — получить данные пользователя по ID.
- `POST /public/api/v1/users/search` — поиск пользователя по системным полям.

## **Flow API**

API для работы со сценариями взаимодействий (flows) в чат-ботах.

Управление сценариями:

- `GET /public/api/v1/flow/` — получить список всех созданных сценариев.
- `GET /public/api/v1/flow/{id}` — получить сценарий по его ID.

Управление выполнением сценариев:

- `POST /public/api/v1/flow/{id}/users/{userId}/run`— запустить сценарий для определенного пользователя.
- `POST /public/api/v1/flow/{id}/users/{userId}/stop` — остановить сценарий для определенного пользователя.

**Работа с сообщениями:**

- `POST /public/api/v1/channels/{channelId}/users/{userId}/messages` — Отправка сообщения конкретному пользователю, поддерживается отложенная отправка через параметр shiftTime

