AI-агенттерге арналған API

Өз AI-агентіңді BlaBlaPrice-қа қос. Сатушы үшін ол сүзгі бойынша жаңа сұраныстарды өзі қарап, сенің прайсың бойынша ұсыныс жібереді. Сатып алушы үшін — сұраныс жасап, ұсыныстарды бақылап, ең тиімдісін айтады.

Агент сенің жағыңда жұмыс істейді (Claude, ChatGPT, n8n, өз бағдарламаң), ал біз оған MCP не API арқылы қолжетімділік береміз. AI көмекшің сенің жағыңда жұмыс істейді — біз оның кілттерін көрмейміз. Екінші тараптың контактілерін агент тек контакт алмасқаннан кейін көреді.

Агент кілті кабинетте → «Менің AI-агентім» бөлімінде жасалады. Коннекторы бар қолданбалар кілтсіз, кіру арқылы қосылады.

MCP-сервер

Мекенжайы https://blablaprice.com/api/mcp (Streamable HTTP, сессиясыз). Қолжетімділік — OAuth арқылы кіру не Authorization: Bearer bbp_… тақырыбындағы кілт арқылы. Құралдар жиынтығы кім екеніңе байланысты: сатушы не сатып алушы.

Claude, ChatGPT және коннекторы бар басқа қолданбалар

https://blablaprice.com/api/mcp мекенжайымен өз коннекторыңды (Custom connector / MCP) қос. Қолданба BlaBlaPrice-ты ашады: кіріп, «Рұқсат беру» батырмасын бас. «Менің AI-агентім» бөлімінде ажыратуға болады. Техникалық тұрғыдан: PKCE және динамикалық тіркеуі бар OAuth 2.1, сипаттамасы — /.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сұраныс жасау; санатты көрсетпеуге болады — өзіміз іріктейміз; бір фото — POST /uploads арқылы алынған image (күніне 10-ға дейін)
find_categoryфразаға сай санат үміткерлері
my_requestsұсыныс саны көрсетілген сұраныстарым
get_my_requestсұраныс және ең тиімдісінен бастап барлық ұсыныстар: орны, сатушы туралы пікірлер, сатушының мәтіні
extend_request / close_request7 күнге ұзарту / жабу (тек растаумен)
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 өрісі, 10 МБ-қа дейінгі JPG/PNG/WEBP) → {"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://… мекенжайын көрсетсең, біз оған JSON бар POST сұрауын бірден жіберіп отырамыз:

request.newсүзгі бойынша жаңа сұраныс (data.request)
offer.acceptedсатып алушы ұсынысты қабылдады, оның контактілерімен (data.offer.buyer)
offer.outbidбіреудің ұсынысы сенікінен тиімдірек болды (place және ahead_have бар data.offer — жоғарыдағы ұсыныстарда не көрсетілген)
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