API документація BlackPost

Огляд

REST API для автоматичної перевірки покупців інтернет-магазинів, подання скарг та отримання статистики.

Базова URL 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 ключ

  1. Зареєструйтесь у сервісі BlackPost
  2. Перейдіть на сторінку API ключі у кабінеті
  3. Натисніть «Створити ключ» та скопіюйте його
Ключ показується лише один раз при створенні. Зберігайте його в безпечному місці. Не передавайте ключ третім особам та не публікуйте у відкритому коді.

Спосіб 1: Заголовок Authorization (рекомендовано)

Заголовок запиту
Authorization: Bearer bg_ваш_api_ключ

Спосіб 2: Query параметр

URL з параметром
https://blackpost.com.ua/api/v1/check?phone=380971234567&api_key=bg_ваш_api_ключ
Приклад (curl)
curl -H "Authorization: Bearer bg_abc123..." \
  https://blackpost.com.ua/api/v1/health
Відповідь
{
  "status": "ok",
  "service": "BlackPost API v1"
}

Перевірка покупця

GET /api/v1/check

Перевіряє покупця в базі BlackPost. Якщо запис не знайдено — здійснює пошук у зовнішніх базах та зберігає результат.

Параметри запиту

ПараметрТипОбов'язковийОпис
phonestring*Номер телефону покупця (формат: 380XXXXXXXXX або 0XXXXXXXXX)
namestring*Прізвище та/або ім'я покупця
emailstring*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Критичний ризикВідмовити у замовленні

Масова перевірка

POST /api/v1/check/bulk

Перевірка до 50 покупців за один запит. Зручно для імпорту замовлень або щоденної перевірки.

Тіло запиту (JSON)

ПараметрТипОбов'язковийОпис
buyersarrayТакМасив об'єктів з полями 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
}

Подання скарги

POST /api/v1/report

Подати скаргу на недобросовісного покупця. Потребує API ключ з правами read_write. Скарга проходить автоматичну верифікацію ТТН.

Тіло запиту (JSON)

ПараметрТипОбов'язковийОпис
buyer_phonestringТакНомер телефону покупця
buyer_last_namestringНіПрізвище покупця
buyer_first_namestringНіІм'я покупця
buyer_emailstringНіEmail покупця
buyer_addressstringНіАдреса доставки (відділення/поштомат)
ttn_numberstringТакНомер ТТН (14 цифр для Нової Пошти)
delivery_servicestringТакnova_poshta, ukrposhta, meest, delivery
categorystringНіnon_pickup, fraud, address_switch, product_swap
order_amountnumberНіСума замовлення, грн
commentstringНіКоментар до скарги (макс. 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 ключа. Кожна скарга перевіряється автоматичною верифікацією ТТН та може бути додатково розглянута модератором.

Профіль покупця

GET /api/v1/buyer/{phone}

Повна інформація про покупця, включаючи список всіх скарг та ризик-скоринг.

Параметри URL

ПараметрТипОпис
phonestringНомер телефону у форматі 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
    }
  ]
}

Статистика

GET /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.

ПланПеревірок / деньСкарг / деньМасова перевіркаЦіна
Free5010До 10 за запитБезкоштовно
Basic50050До 50 за запитУточнюйте
Pro5 000500До 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-кодом.

КодОписМожлива причина
400Bad RequestНевірні параметри або відсутні обов'язкові поля
401UnauthorizedВідсутній або невірний API ключ
403ForbiddenAPI ключ не має прав на запис (для /report)
404Not FoundПокупець або ресурс не знайдений
409ConflictДублікат: скарга з таким ТТН вже існує
422Unprocessable EntityНевірний формат телефону або ТТН
429Too Many RequestsДобовий ліміт вичерпано
500Server ErrorВнутрішня помилка сервера
Приклад помилки
{
  "error": "Невірний формат номера телефону",
  "detail": "Очікується формат 380XXXXXXXXX (12 цифр)"
}

Приклади інтеграції

Python

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)

javascript
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

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.