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● Темно-червонийВідмовити

Ліміти запитів

Ліміти встановлюються на місяць та скидаються 1-го числа о 00:00 UTC.

ПланПеревірок / місСкарг / місМасова перевіркаЦіна
Free15010До 10 за запит0 грн
Starter50050До 50 за запит99 грн/міс
Business2 000200До 50 за запит199 грн/міс
Pro10 0001 000До 50 за запит499 грн/міс
EnterpriseБез обмеженьБез обмеженьДо 50 за запитвід 1 499 грн/міс

При перевищенні ліміту API повертає код 429 Too Many Requests з заголовком Retry-After.

Відповідь при перевищенні ліміту
{
  "error": "Ліміт запитів вичерпано",
  "limit": 150,
  "used": 150,
  "resets_at": "2026-04-01T00: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.