Результат: одна внешняя запись будет соответствовать одному подписчику платформы по паре bot_id + external_id.
Методы и права
GET /subscribersиGET /subscribers/{id}—subscribers:read.POST /subscribersиPATCH /subscribers/{id}—subscribers:write.
POST выполняет upsert: повтор той же пары обновляет существующую запись, а не должен создавать новую.

Безопасный тест
- Получите
bot_idчерезGET /bots. - Создайте внешний идентификатор вида
test-<uuid>. - Не используйте реальный email или телефон.
- Выполните POST по точной схеме OpenAPI.
- Повторите тот же запрос и убедитесь, что запись одна.
- Прочитайте её через GET.
curl --fail-with-body -X POST \
-H "Authorization: Bearer $APPSMAX_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"bot_id":BOT_ID,"external_id":"test-UUID"}' \
https://telegram.appsmax.ru/api/v1/subscribers

Каналы, статусы и теги
Передавайте только поля, которые есть в OpenAPI 1.1.1. Наличие подписчика или статуса в API не гарантирует возможность и доставку сообщения: согласие, доступность канала, правила провайдера и фактическое состояние подключения проверяются отдельно.
Ошибки и очистка
422 обычно означает неверный формат или обязательное поле, 403 — недостаточное право API. Если публичного delete нет, не придумывайте его: удалите тестовую запись штатным способом либо оставьте обезличенную тестовую запись по принятой политике среды.
Дальше: рассылки через REST API.
Если не хочется разбираться самостоятельно, мы можем помочь. Поможем настроить платформу под вашу задачу и быстрее запустить проект без лишних шагов.