Общий принцип работы 
- Получить список доступных баз данных и филиалов GET: (https://developer.medflex.ru/marketing/tag/marketing/marketing_databases_list)
- Создать сегмент с условиями отбора пациентов POST: (https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_create)
- Дождаться готовности сегмента (статус ready) GET:(https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_list)
- Получить список идентификаторов пациентов GET: (https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_retrieve)
- Запросить персональные данные по нужным пациентам POST: (https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_results_create)
- После рассылки записать информацию о ней POST: (https://developer.medflex.ru/marketing/tag/marketing/marketing_mailings_create)
Все запросы требуют авторизации. Идентификаторы пациентов временные (действуют 24 часа) и привязаны к конкретному сегменту.
Шаг 1. Получить список баз данных 
GET /marketing/databases/Возвращает базы данных, к которым у вас есть доступ. Каждая база содержит один или несколько филиалов (lpu_ids).
Ответ:
{"count": 2,"results": [{"database_id": 1000,"database_name": "Клиника Здоровье","lpu_ids": [10000, 10001]},{"database_id": 2000,"database_name": "Стоматология Улыбка","lpu_ids": [20000]}]}database_id используется при создании сегмента. lpu_ids можно указать в фильтрах для ограничения выборки по конкретным филиалам.
Шаг 2. Создать сегмент 
POST /marketing/segments/Сегмент описывает условия отбора пациентов. Обработка асинхронная: запрос возвращает UUID сегмента, результат будет доступен позже.
Примеры запросов: Примеры запросов по маркетинговым рассылкам
Минимальный запрос
{"name": "Активные за полгода","database_id": 1000,"conditions": {"include": {"appointments": {"days_from": -180,"days_to": 0,"status": ["completed"]}}}}Полный запрос
{"name": "Мужчины 36-45, 5+ визитов к стоматологу, траты > 50к","database_id": 1000,"exclude_patients": {"success_mailing_name": ["promo_dental"],"days_from_mailing": 30,"mass_imported_patients": true},"conditions": {"include": {"patients": {"gender": "male","age_group": ["H"],"days_in_database_from": -365,},"appointments": {"lpu_ids": [10000, 10001],"days_from": -365,"days_to": 0,"status": ["completed"],"speciality_ids": [23000],"service_ids": [11000, 12000],"quantity_from": 5},"statistics": {"purchase_amount_from": 50000,"bill_avg_from": 8000}},"exclude": {"appointments": {"days_from": -30,"days_to": 0,"service_ids": [11000]}}}}Ответ (201):
{ "segment_uuid": "d1c060a0-8375-4ff9-bce5-9bb03029256f" }Структура conditions 
conditions состоит из двух блоков:
- include - кого включить в сегмент;
- exclude - кого исключить из результата.
Оба блока вычисляются независимо по всей базе. Результат: пациенты из include минус пациенты из exclude. Фильтры одного блока не влияют на другой.
Пример: если в include указан days_from: -180, а в exclude не указан период, то исключение будет по всей истории, а не за те же 6 месяцев.
Более подробно о теле запроса conditions: https://developer.medflex.ru/marketing/tag/marketing/marketing_segments_create
Шаг 3. Дождаться готовности 
GET /marketing/segments/{segment_uuid}/Периодически проверяйте статус сегмента. Статусы сегментов, их описание и что нужно с ними делать:
- pending – В очереди на обработку – Ждать;
- in_progress – Обрабатывается – Ждать;
- ready – Готов – Запросить patient_ids (поле в ответе);
- failed – Ошибка – Посмотреть error_detail, создать новый сегмент.
Ответ (статус ready):
{"segment_uuid": "d1c060a0-...","name": "Активные за полгода","status": "ready","patients_count": 450,"error_detail": null,"patient_ids": ["5c437229-17a1-4b0a-9068-b6f2cf26455c","5904d239-175e-42e5-8497-86aa1c4a3151","..."],"dt_created": "2026-03-20T09:00:00+03:00","dt_requested": "2026-03-20T09:00:05+03:00","dt_ready": "2026-03-20T09:00:35+03:00"}patient_ids - временные идентификаторы. Действуют 24 часа. После истечения сегмент автоматически пересчитается при следующем обращении.
Рекомендуемый интервал опроса: 10-30 секунд. Среднее время обработки: 15-60 секунд.
Шаг 4. Получить персональные данные 
POST /marketing/segments/{segment_uuid}/results/Запрашивайте данные порциями до 100 пациентов за раз.
Запрос:
{"patient_ids": ["5c437229-17a1-4b0a-9068-b6f2cf26455c","5904d239-175e-42e5-8497-86aa1c4a3151"]}Ответ:
[{"id": "5c437229-17a1-4b0a-9068-b6f2cf26455c","first_name": "Семен","patronymic": "Семеныч","phone": "+79XXXXXXXXX","email": "xxx@xxx.ru","age_group": "F"},{"id": "5904d239-175e-42e5-8497-86aa1c4a3151","first_name": "Мария","patronymic": null,"phone": "+79XXXXXXXXX","email": null,"age_group": null}]Поля patronymic, phone, email, age_group могут быть null, если данные отсутствуют в системе клиники.
Шаг 5. Записать информацию о рассылке 
POST /marketing/mailings/После отправки рассылки запишите, каким пациентам она была отправлена. Это нужно для работы exclude_patients в следующих сегментах.
Запрос:
{"patient_ids": ["5c437229-17a1-4b0a-9068-b6f2cf26455c","5904d239-175e-42e5-8497-86aa1c4a3151"],"success_mailing_name": "promo_dental","segment_uuid": "d1c060a0-8375-4ff9-bce5-9bb03029256f"}Ответ (201):
{}Записи хранятся 45 дней.
Удаление сегмента 
DELETE /marketing/segments/{segment_uuid}/Удаляет сегмент и очищает связанные данные.
Справочники 
Врачи 
GET /models/doctor/Возвращает врачей с активным расписанием. Используйте doctor_ids из ответа в фильтрах сегмента.
Специальности 
GET /models/speciality/Возвращает специальности. При использовании speciality_ids в сегменте система автоматически найдет врачей нужных специальностей.
Услуги 
GET /services/prices/?lpu_id=<Идентификатор клиники>Возвращает доступные услуги. Используйте идентификаторы в поле service_ids.
Лимиты 
- Активных сегментов (pending, in_progress, ready) на одну базу – 100;
- Готовых (ready) сегментов на одну базу – 10;
- Пациентов в одном запросе /results/ – 100;
- Срок жизни идентификаторов пациентов – 24 часа;
- Минимальный размер сегмента – 30 пациентов;
- Максимальный размер сегмента – 5% базы;
- Лимит уникальных пациентов в месяц – 30%.