API документація BlackPost
Огляд
REST API для автоматичної перевірки покупців інтернет-магазинів, подання скарг та отримання статистики.
https://blackpost.com.ua/api/v1
JSON
UTF-8
Bearer Token (API ключ)
Доступні ендпоінти
| Метод | Ендпоінт | Опис |
|---|---|---|
| GET | /api/v1/check | Перевірка покупця за телефоном, ім'ям або email |
| POST | /api/v1/check/bulk | Масова перевірка до 50 покупців |
| POST | /api/v1/report | Подання скарги на покупця |
| GET | /api/v1/buyer/{phone} | Повний профіль покупця |
| GET | /api/v1/stats | Статистика сервісу (публічний) |
| GET | /api/v1/health | Статус API (публічний) |
Автентифікація
Всі запити до API (крім публічних ендпоінтів) потребують API ключа. Ключ передається в заголовку Authorization або як параметр api_key.
Як отримати API ключ
- Зареєструйтесь у сервісі BlackPost
- Перейдіть на сторінку API ключі у кабінеті
- Натисніть «Створити ключ» та скопіюйте його
Спосіб 1: Заголовок Authorization (рекомендовано)
Authorization: Bearer bg_ваш_api_ключ
Спосіб 2: Query параметр
https://blackpost.com.ua/api/v1/check?phone=380971234567&api_key=bg_ваш_api_ключ
curl -H "Authorization: Bearer bg_abc123..." \
https://blackpost.com.ua/api/v1/health
{
"status": "ok",
"service": "BlackPost API v1"
}
Перевірка покупця
/api/v1/check
Перевіряє покупця в базі BlackPost. Якщо запис не знайдено — здійснює пошук у зовнішніх базах та зберігає результат.
Параметри запиту
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
phone | string | * | Номер телефону покупця (формат: 380XXXXXXXXX або 0XXXXXXXXX) |
name | string | * | Прізвище та/або ім'я покупця |
email | string | * | Email-адреса покупця |
* Обов'язково хоча б один з параметрів: phone, name або email.
curl -H "Authorization: Bearer bg_abc123..." \
"https://blackpost.com.ua/api/v1/check?phone=380971234567"
curl -H "Authorization: Bearer bg_abc123..." \
"https://blackpost.com.ua/api/v1/check?name=Петренко"
{
"found": true,
"buyer": {
"phone": "380971234567",
"phone_masked": "0971***567",
"names": ["Петренко Іван"],
"risk_score": 65,
"risk_level": "high",
"risk_level_ua": "Високий ризик",
"total_reports": 3,
"unique_sellers": 2,
"last_report_date": "2026-03-01",
"categories": ["non_pickup", "fraud"],
"status": "active"
},
"blackbox_fallback": false,
"recommendation": "prepayment_required"
}
{
"found": false,
"buyer": null,
"blackbox_fallback": false,
"recommendation": "safe"
}
Значення recommendation
| Значення | Опис | Рекомендована дія |
|---|---|---|
safe | Покупець чистий | Відправляти без обмежень |
caution | Низький ризик | Відправляти, але контролювати |
prepayment_recommended | Середній ризик | Краще попередня оплата |
prepayment_required | Високий ризик | Тільки по передоплаті |
block | Критичний ризик | Відмовити у замовленні |
Масова перевірка
/api/v1/check/bulk
Перевірка до 50 покупців за один запит. Зручно для імпорту замовлень або щоденної перевірки.
Тіло запиту (JSON)
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
buyers | array | Так | Масив об'єктів з полями phone та/або name |
curl -X POST \
-H "Authorization: Bearer bg_abc123..." \
-H "Content-Type: application/json" \
-d '{
"buyers": [
{"phone": "380971234567"},
{"phone": "380501112233", "name": "Іваненко"},
{"phone": "380631234567"}
]
}' \
https://blackpost.com.ua/api/v1/check/bulk
{
"results": {
"380971234567": {
"found": true,
"risk_score": 65,
"risk_level": "high",
"total_reports": 3,
"recommendation": "prepayment_required"
},
"380501112233": {
"found": false,
"risk_score": 0,
"risk_level": "clean",
"recommendation": "safe"
},
"380631234567": {
"found": true,
"risk_score": 28,
"risk_level": "medium",
"total_reports": 1,
"recommendation": "prepayment_recommended"
}
},
"checked_count": 3,
"found_count": 2
}
Подання скарги
/api/v1/report
Подати скаргу на недобросовісного покупця. Потребує API ключ з правами read_write. Скарга проходить автоматичну верифікацію ТТН.
Тіло запиту (JSON)
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
buyer_phone | string | Так | Номер телефону покупця |
buyer_last_name | string | Ні | Прізвище покупця |
buyer_first_name | string | Ні | Ім'я покупця |
buyer_email | string | Ні | Email покупця |
buyer_address | string | Ні | Адреса доставки (відділення/поштомат) |
ttn_number | string | Так | Номер ТТН (14 цифр для Нової Пошти) |
delivery_service | string | Так | nova_poshta, ukrposhta, meest, delivery |
category | string | Ні | non_pickup, fraud, address_switch, product_swap |
order_amount | number | Ні | Сума замовлення, грн |
comment | string | Ні | Коментар до скарги (макс. 1000 символів) |
Категорії скарг
| Категорія | Опис |
|---|---|
non_pickup | Не забрав посилку з відділення |
fraud | Шахрайство (навмисний обман продавця) |
address_switch | Змінив адресу для ухилення від оплати |
product_swap | Повернув інший товар замість отриманого |
curl -X POST \
-H "Authorization: Bearer bg_abc123..." \
-H "Content-Type: application/json" \
-d '{
"buyer_phone": "380971234567",
"buyer_last_name": "Петренко",
"buyer_first_name": "Іван",
"ttn_number": "20450000123456",
"delivery_service": "nova_poshta",
"category": "non_pickup",
"order_amount": 1500.00,
"comment": "Покупець не забрав посилку протягом 5 днів"
}' \
https://blackpost.com.ua/api/v1/report
{
"ok": true,
"report_id": 42,
"status": "pending",
"message": "Скарга прийнята. ТТН буде верифіковано автоматично."
}
Профіль покупця
/api/v1/buyer/{phone}
Повна інформація про покупця, включаючи список всіх скарг та ризик-скоринг.
Параметри URL
| Параметр | Тип | Опис |
|---|---|---|
phone | string | Номер телефону у форматі 380XXXXXXXXX |
curl -H "Authorization: Bearer bg_abc123..." \
https://blackpost.com.ua/api/v1/buyer/380971234567
{
"phone": "380971234567",
"names": ["Петренко Іван", "Петренко І.В."],
"risk_score": 65,
"risk_level": "high",
"risk_level_ua": "Високий ризик",
"total_reports": 3,
"unique_sellers": 2,
"status": "active",
"first_report_date": "2025-12-15",
"last_report_date": "2026-03-01",
"reports": [
{
"id": 42,
"category": "non_pickup",
"category_ua": "Не забрав посилку",
"delivery_service": "nova_poshta",
"ttn_verified": true,
"order_amount": 1500.00,
"date": "2026-03-01",
"comment": "Покупець не забрав посилку протягом 5 днів"
},
{
"id": 38,
"category": "non_pickup",
"category_ua": "Не забрав посилку",
"delivery_service": "nova_poshta",
"ttn_verified": true,
"order_amount": 890.00,
"date": "2026-01-20",
"comment": null
}
]
}
Статистика
/api/v1/stats
Загальна статистика сервісу. Публічний ендпоінт — не потребує автентифікації.
curl https://blackpost.com.ua/api/v1/stats
{
"total_buyers": 12500,
"total_reports": 8900,
"total_shops": 450,
"total_checks": 150000
}
Рівні ризику
BlackPost використовує алгоритм скорингу (0–100 балів) для оцінки ризику покупця. Скоринг враховує кількість скарг, унікальних продавців, давність, тяжкість та відсоток відмов.
| Бали | Рівень | risk_level | Колір | Рекомендація |
|---|---|---|---|---|
| 0 | Чистий | clean | ● Зелений | Безпечно відправляти |
| 1–25 | Низький | low | ● Жовтий | Обережність |
| 26–50 | Середній | medium | ● Оранжевий | Бажана передоплата |
| 51–75 | Високий | high | ● Червоний | Тільки передоплата |
| 76–100 | Критичний | critical | ● Темно-червоний | Відмовити |
Ліміти запитів
Ліміти встановлюються на добу та скидаються о 00:00 UTC.
| План | Перевірок / день | Скарг / день | Масова перевірка | Ціна |
|---|---|---|---|---|
| Free | 50 | 10 | До 10 за запит | Безкоштовно |
| Basic | 500 | 50 | До 50 за запит | Уточнюйте |
| Pro | 5 000 | 500 | До 50 за запит | Уточнюйте |
| Enterprise | Без обмежень | Без обмежень | До 50 за запит | Індивідуально |
При перевищенні ліміту API повертає код 429 Too Many Requests з заголовком Retry-After.
{
"error": "Ліміт запитів вичерпано",
"limit": 50,
"used": 50,
"resets_at": "2026-03-15T00:00:00Z"
}
Коди помилок
У разі помилки API повертає JSON з полем error та відповідним HTTP-кодом.
| Код | Опис | Можлива причина |
|---|---|---|
400 | Bad Request | Невірні параметри або відсутні обов'язкові поля |
401 | Unauthorized | Відсутній або невірний API ключ |
403 | Forbidden | API ключ не має прав на запис (для /report) |
404 | Not Found | Покупець або ресурс не знайдений |
409 | Conflict | Дублікат: скарга з таким ТТН вже існує |
422 | Unprocessable Entity | Невірний формат телефону або ТТН |
429 | Too Many Requests | Добовий ліміт вичерпано |
500 | Server Error | Внутрішня помилка сервера |
{
"error": "Невірний формат номера телефону",
"detail": "Очікується формат 380XXXXXXXXX (12 цифр)"
}
Приклади інтеграції
Python
import requests
API_KEY = "bg_ваш_api_ключ"
BASE_URL = "https://blackpost.com.ua/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# Перевірка покупця
resp = requests.get(
f"{BASE_URL}/check",
params={"phone": "380971234567"},
headers=headers
)
data = resp.json()
if data["found"]:
score = data["buyer"]["risk_score"]
print(f"Ризик: {score}/100 — {data['recommendation']}")
else:
print("Покупець чистий")
JavaScript (Node.js / fetch)
const API_KEY = "bg_ваш_api_ключ";
const BASE_URL = "https://blackpost.com.ua/api/v1";
async function checkBuyer(phone) {
const resp = await fetch(
`${BASE_URL}/check?phone=${phone}`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const data = await resp.json();
if (data.found) {
console.log(`Ризик: ${data.buyer.risk_score}/100`);
console.log(`Рекомендація: ${data.recommendation}`);
} else {
console.log("Покупець чистий");
}
}
checkBuyer("380971234567");
PHP
$apiKey = "bg_ваш_api_ключ";
$phone = "380971234567";
$ch = curl_init("https://blackpost.com.ua/api/v1/check?phone={$phone}");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$apiKey}"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['found']) {
$score = $data['buyer']['risk_score'];
echo "Ризик: {$score}/100 — {$data['recommendation']}";
} else {
echo "Покупець чистий";
}
OpenCart модуль
Для OpenCart 3.x доступний готовий модуль, який автоматично перевіряє покупців при оформленні замовлення. Завантажте модуль та встановіть через адмін-панель.
Детальна інструкція — зверніться на info@blackpost.com.ua.