API Документация
Отправляйте письма Wallapop автоматически через HTTP-запросы.
Парсинг объявлений, генерация писем, сокращение ссылок.
https://api.midnightchamberx.com/api/v1/mailer
Быстрый старт
Получите API ключ
Запросите ключ через Telegram бота: Профиль → API доступ → Подать заявку. После одобрения администратором вы получите ключ формата midnight_xxxxxxxx.
Добавьте заголовок авторизации
Передавайте ключ в заголовке X-MIDNIGHT-TOKEN каждого запроса.
Отправьте первое письмо
Используйте эндпоинт /send для автоматической отправки по ссылке Wallapop.
curl -X POST "https://api.midnightchamberx.com/api/v1/mailer/send" \
-H "Content-Type: application/json" \
-H "X-MIDNIGHT-TOKEN: midnight_your_key" \
-d '{
"listing_url": "https://es.wallapop.com/item/12345",
"to_email": "[email protected]",
"link": "https://your-link.com/pay",
"lang": "es",
"shorten_link": true
}'
Аутентификация
Все запросы к API требуют заголовок X-MIDNIGHT-TOKEN. Поддерживаются два типа токенов:
API ключ
Постоянный ключ для команды/проекта. Формат: midnight_xxxxxxxx. Не имеет срока действия. Выдаётся администратором после одобрения заявки.
Ключ подписки
Временный ключ с ограниченным сроком (1/7/30 дней). Формат: UUID. Привязывается к Telegram ID при активации. Деактивируется автоматически.
401 Unauthorized:
{"detail": "Api token is required"}
Пример заголовка
X-MIDNIGHT-TOKEN: midnight_a1b2c3d4e5f6g7h8
/api/v1/mailer/send
Отправить письмо (авто)
Парсит объявление Wallapop по ссылке, извлекает название и цену, генерирует письмо из шаблона и отправляет на указанный email.
Параметры запроса
listing_urlstringдаURL объявления Wallapop (https://*.wallapop.com/...)
to_emailstringдаEmail получателя
linkstringдаСсылка для кнопки в письме
langstringнетЯзык шаблона: es (Испания) или it (Италия). Авто-определение по URL
shorten_linkbooleanнетСократить ссылку через Short.io. По умолчанию false
Ответ
{
"success": true,
"message": "Email sent successfully",
"details": {
"to": "[email protected]",
"item_name": "iPhone 15 Pro Max",
"price": "899.00",
"template": "wallapop_es.html"
}
}
curl -X POST "https://api.midnightchamberx.com/api/v1/mailer/send" \
-H "Content-Type: application/json" \
-H "X-MIDNIGHT-TOKEN: YOUR_TOKEN" \
-d '{
"listing_url": "https://es.wallapop.com/item/iphone-15-pro-123",
"to_email": "[email protected]",
"link": "https://pay.example.com/order/123",
"lang": "es",
"shorten_link": true
}'
/api/v1/mailer/send-manual
Ручная отправка
Отправляет письмо с указанными вручную данными товара и выбранным шаблоном. Не требует парсинга — вы сами задаёте название, цену и шаблон.
Параметры запроса
to_emailstringдаEmail получателя
templatestringдаИмя файла шаблона (напр. wallapop_es.html)
linkstringдаСсылка для кнопки в письме
item_namestringдаНазвание товара
amountstringдаЦена товара (напр. "149.99")
from_namestringнетИмя отправителя. По умолчанию "Wallapop"
shorten_linkbooleanнетСократить ссылку. По умолчанию false
Ответ
{
"success": true,
"message": "Email sent successfully",
"details": {
"to": "[email protected]",
"template": "wallapop_es.html"
}
}
curl -X POST "https://api.midnightchamberx.com/api/v1/mailer/send-manual" \
-H "Content-Type: application/json" \
-H "X-MIDNIGHT-TOKEN: YOUR_TOKEN" \
-d '{
"to_email": "[email protected]",
"template": "wallapop_es.html",
"link": "https://pay.example.com/order/456",
"item_name": "MacBook Pro M3",
"amount": "1299.00",
"from_name": "Wallapop",
"shorten_link": false
}'
/api/v1/mailer/shorten
Сократить ссылку
Сокращает URL через Short.io. Можно использовать отдельно от отправки писем.
Параметры запроса
urlstringдаURL для сокращения (должен начинаться с http:// или https://)
Ответ
{
"success": true,
"short_url": "https://short.link/abc123",
"original_url": "https://very-long-url.com/path/to/page"
}
curl -X POST "https://api.midnightchamberx.com/api/v1/mailer/shorten" \
-H "Content-Type: application/json" \
-H "X-MIDNIGHT-TOKEN: YOUR_TOKEN" \
-d '{"url": "https://example.com/very/long/path"}'
/api/v1/mailer/templates
Список шаблонов
Возвращает список доступных HTML-шаблонов писем. Используйте имя шаблона в /send-manual.
Ответ
{
"templates": [
"wallapop_es.html",
"wallapop_it.html"
]
}
curl "https://api.midnightchamberx.com/api/v1/mailer/templates" \
-H "X-MIDNIGHT-TOKEN: YOUR_TOKEN"
/api/v1/mailer/languages
Поддерживаемые языки
Возвращает список поддерживаемых языков с привязкой к шаблонам. Используйте код языка в поле lang эндпоинта /send.
Ответ
{
"es": {
"template": "wallapop_es.html",
"name": "🇪🇸 Испания"
},
"it": {
"template": "wallapop_it.html",
"name": "🇮🇹 Италия"
}
}
curl "https://api.midnightchamberx.com/api/v1/mailer/languages" \
-H "X-MIDNIGHT-TOKEN: YOUR_TOKEN"
Интеграция в другое ПО
Для подключения CRM, скриптов, мобильных приложений и сервисов используйте REST API с заголовком X-MIDNIGHT-TOKEN и JSON-телом. Полное руководство с примерами на Python, JavaScript, PHP, C# и таблицами полей — в файле:
- Базовый URL и список путей
- Аутентификация (API-ключ и ключ подписки)
- Описание
detailsв ответеMailerResponse - Исключения middleware (без токена:
/health,/openapi.json) - Рекомендации: таймауты, безопасность ключа, OpenAPI
Машиночитаемая схема: /openapi.json
Коды ошибок
API использует стандартные HTTP-коды состояния. Тело ответа содержит поле detail с описанием ошибки.
X-MIDNIGHT-TOKEN
Формат ошибки
// 401 — нет токена
{"detail": "Api token is required"}
// 401 — невалидный токен
{"detail": "Invalid or expired token"}
// 400 — невалидный URL
{"detail": "listing_url must be a valid Wallapop URL"}
// 400 — невалидный email
{"detail": "to_email must be a valid email address"}
// 400 — невалидная ссылка для сокращения
{"detail": "url must start with http:// or https://"}
// 403 — отсутствует обязательное поле
{"detail": "listing_url is required"}
// 403 — несколько полей отсутствуют
{"details": "Listing_url, to_email, link are required"}
Модели данных
SendWallapopRequest
Тело запроса для авто-отправки по ссылке Wallapop.
{
"listing_url": "string", // URL объявления Wallapop (обяз.)
"to_email": "string", // Email получателя (обяз.)
"link": "string", // Ссылка для кнопки (обяз.)
"lang": "string | null", // Язык: "es" / "it" (опц.)
"shorten_link": false // Сократить ссылку (опц.)
}
SendManualRequest
Тело запроса для ручной отправки с пользовательскими данными.
{
"to_email": "string", // Email получателя (обяз.)
"template": "string", // Имя шаблона (обяз.)
"link": "string", // Ссылка для кнопки (обяз.)
"item_name": "string", // Название товара (обяз.)
"amount": "string", // Цена (обяз.)
"from_name": "Wallapop", // Имя отправителя (опц.)
"shorten_link": false // Сократить ссылку (опц.)
}
ShortenRequest
Тело запроса для сокращения ссылки.
{
"url": "string" // URL для сокращения (http:// или https://)
}
MailerResponse
Стандартный ответ эндпоинтов отправки.
{
"success": true, // Успех операции
"message": "string", // Текстовое описание результата
"details": {} // Детали (шаблон, получатель и т.д.)
}
ShortenResponse
Ответ сокращения ссылки.
{
"success": true,
"short_url": "string | null", // Короткая ссылка (null при ошибке)
"original_url": "string" // Оригинальный URL
}
TemplatesResponse
Список доступных шаблонов.
{
"templates": ["string"] // Массив имён файлов шаблонов
}