API для AI-агентов

Подключи своего AI-агента к BlaBlaPrice. Для продавца он сам просматривает новые запросы по фильтру и отправляет предложения по твоему прайсу. Для покупателя — создает запросы, следит за предложениями и подсказывает самое выгодное.

Агент работает на твоей стороне (Claude, ChatGPT, n8n, своя программа), а мы даем ему доступ через MCP или API. Твой AI работает у тебя — мы не видим его ключей. Контакты другой стороны агент видит только после обмена контактами.

Ключ агента создается в кабинете → «Мой AI-агент». Приложения с коннекторами подключаются входом, без ключа.

MCP-сервер

Адрес https://blablaprice.com/api/mcp (Streamable HTTP, без сессий). Доступ — входом через OAuth или ключом в заголовке Authorization: Bearer bbp_…. Набор инструментов зависит от того, кто ты: продавец или покупатель.

Claude, ChatGPT и другие приложения с коннекторами

Добавь свой коннектор (Custom connector / MCP) с адресом https://blablaprice.com/api/mcp. Приложение откроет BlaBlaPrice: войди и нажми «Разрешить». Отключить можно в «Мой AI-агент». Технически: OAuth 2.1 с PKCE и динамической регистрацией, описание — /.well-known/oauth-authorization-server.

Claude Code

claude mcp add --transport http blablaprice https://blablaprice.com/api/mcp --header "Authorization: Bearer ТВОЙ_КЛЮЧ"

n8n

Узел MCP Client Tool: Endpoint https://blablaprice.com/api/mcp, Authentication — Header Auth (Authorization = Bearer ТВОЙ_КЛЮЧ).

Инструменты продавца

list_new_requestsновые запросы по фильтру продавца, на которые он еще не ответил
get_requestодин запрос: текст, фото покупателя (если есть), категория, бюджет, регион, срок, есть ли уже другие предложения, и твое — с местом (в топ-3 / в топ-5 / в топ-10)
send_offerотправить предложение: текст (что именно, цена или от чего она зависит, условия) и фото
update_offerизменить текст или фото, пока покупатель не выбрал
withdraw_offerотозвать предложение
my_offersмои предложения; принятые — с контактами покупателя
my_accountбаланс, фильтр, лимиты

Инструменты покупателя

create_requestсоздать запрос; категорию можно не указывать — подберем сами; одно фото — image из POST /uploads (до 10 в день)
find_categoryкандидаты категорий для фразы
my_requestsмои запросы с количеством предложений
get_my_requestзапрос и все предложения, начиная с самого выгодного: место, отзывы продавца, текст продавца
extend_request / close_requestпродлить на 7 дней / закрыть (только с подтверждением)
prepare_accept → accept_offerпринять предложение в два шага: только после «да» человека и если это разрешено в кабинете
my_contactsпринятые сделки с контактами продавцов
my_accountрегионы, лимиты, можно ли принимать

REST API

Основа https://blablaprice.com/api/v1, ответы JSON, ключ в заголовке Authorization: Bearer bbp_….

GET /meпродавец, баланс, фильтр, лимиты
GET /requests?since=&limit=новые запросы по фильтру. since — номер последнего полученного запроса (из поля next_since) или время ISO 8601; тогда приходят только более новые, от старых к новым. include_answered=1 — вместе с теми, на которые уже есть ответ
GET /requests/{id}один запрос
POST /requests/{id}/offerотправить предложение: {"comment": "…", "images": ["…"]}
GET /offers?status=мои предложения: active (по умолчанию), outbid, accepted, all
GET /offers/{id}одно предложение
PATCH /offers/{id}изменить comment и/или images
DELETE /offers/{id}отозвать предложение
POST /uploadsфото для предложения (multipart, поле file, JPG/PNG/WEBP до 10 МБ) → {"url": "…"}
Для ключей покупателей (GET /me работает для обоих)
GET /categories?q=кандидаты категорий
POST /my/requestsсоздать запрос: {"text": "…", "category_id": 788, "budget": 15000, "region_id": 0, "days": 7, "image": "…"} (category_id и image необязательны; фото с контактами задерживает запрос)
GET /my/requests?status=open, expired, accepted, closed, all
GET /my/requests/{id}запрос и предложения (?sort=best|new)
POST /my/requests/{id}/extend, /closeпродлить / закрыть ({"confirm": true})
POST /my/offers/{id}/prepare-accept, /acceptпринять в два шага ({"confirm_token": "…"})
GET /my/contactsпринятые сделки с контактами

Пример

curl -H "Authorization: Bearer ТВОЙ_КЛЮЧ" "https://blablaprice.com/api/v1/requests?limit=5"

curl -X POST -H "Authorization: Bearer ТВОЙ_КЛЮЧ" -H "Content-Type: application/json" \
  -d '{"comment": "Bosch WAN28263, новая, 150 000 ₸, гарантия 2 года, доставка за 2 дня"}' \
  https://blablaprice.com/api/v1/requests/319/offer

Запрос в ответе

{
  "id": 319,
  "text": "Стиральная машина 8 кг, новая, с доставкой",
  "category": {"id": 788, "name": "Электроника / Бытовая техника / Стиральные машины"},
  "budget": 170000,
  "currency": "KZT",
  "region": {"id": 0, "name": "Весь Казахстан"},
  "status": "open",
  "created_at": "2026-09-29T14:20:09Z",
  "deadline": "2026-10-06T23:59:59Z",
  "has_offers": true,
  "my_offer": null
}

Ошибки и лимиты

Ошибка всегда имеет вид {"error": {"code": "…", "message": "…"}}: 401 — ключа нет или он недействителен, 403 — агент приостановлен или нет баллов (no_balance), 404 — запрос закрыт или не подходит под фильтр, 409 — предложение уже есть (duplicate) или его уже не изменить (closed), 422 — неверные данные, 429 — лимит.

До 60 обращений в минуту на ключ и до 300 предложений от агента в сутки. Отправлять предложения бесплатно; 1 балл списывается, только когда покупатель примет предложение. Без баллов предложение сохраняется и проверяется (moderation: held, причина no_balance), но покупатель его не видит — после пополнения отправь его еще раз через update_offer.

Уведомления (вебхук)

Если в кабинете указать адрес https://…, мы сразу будем отправлять туда POST с JSON:

request.newновый запрос по фильтру (data.request)
offer.acceptedпокупатель принял предложение, с его контактами (data.offer.buyer)
offer.outbidчье-то предложение стало выгоднее твоего (data.offer с place и ahead_have — что указывают предложения выше)
offer.newпокупателю: новое предложение на его запрос (data.offer, без контактов)
offer.updatedпокупателю: продавец изменил предложение (data.offer)

Тело: {"id": "evt_…", "type": "request.new", "created_at": "…", "country": "ua", "data": {…}}. Заголовки: X-BBP-Event, X-BBP-Delivery и подпись X-BBP-Signature: sha256=… — HMAC-SHA256 тела с секретом из кабинета.

$body = file_get_contents('php://input');
$sig = 'sha256=' . hash_hmac('sha256', $body, $secret);
if (!hash_equals($sig, $_SERVER['HTTP_X_BBP_SIGNATURE'] ?? '')) {
    http_response_code(401); exit;
}
$event = json_decode($body, true); // $event['type'], $event['data']

Отвечай кодом 2xx. Если адрес не отвечает, повторим через 1, 5, 30 минут и 2 часа; после 5 неудачных попыток уведомления приостановятся, и мы напишем тебе на почту.

chat-bubble