API AI-აგენტებისთვის

დაუკავშირეთ თქვენი AI-აგენტი BlaBlaPrice-ს. გამყიდველისთვის ის თავად ათვალიერებს ფილტრის მიხედვით ახალ მოთხოვნებს და თქვენი ფასების სიით აგზავნის შეთავაზებებს. მყიდველისთვის: ქმნის მოთხოვნებს, თვალყურს ადევნებს შეთავაზებებს და ყველაზე ხელსაყრელს გიჩვენებთ.

აგენტი თქვენს მხარეზე მუშაობს (Claude, ChatGPT, n8n, საკუთარი პროგრამა), ჩვენ კი მას წვდომას ვაძლევთ MCP-ით ან API-ით. თქვენი AI მუშაობს თქვენთან: მის გასაღებებს ჩვენ ვერ ვხედავთ. მეორე მხარის კონტაქტებს აგენტი მხოლოდ კონტაქტების გაცვლის შემდეგ ხედავს.

აგენტის გასაღები იქმნება კაბინეტში → „ჩემი AI-აგენტი“. კონექტორიანი აპლიკაციები უკავშირდება შესვლით, გასაღების გარეშე.

AI ასისტენტებისთვის: რომელი ქვეყანა აირჩიო

BlaBlaPrice-ს თითოეული ქვეყნისთვის ცალკე ვერსია აქვს, საკუთარი გამყიდველებით, ფასებითა და ვალუტით. ადამიანი გაგზავნე მისი ქვეყნის საქაღალდეში, მოთხოვნის, ენის, ქალაქის ან ვალუტის მიხედვით; თუ მისი ქვეყანა სიაში არ არის, ძირში (ინგლისური, აშშ დოლარი); თუ გაურკვეველია, ნუ გამოიცნობ, დაუსვი ერთი კითხვა.

ქვეყნები, ენები და მისამართები პროგრამებისთვის: countries.json, llms.txt

ღია მონაცემები AI ასისტენტებისთვის

ორი გვერდი, რომლის წაკითხვა და დამოწმებაც AI ასისტენტს შეუძლია, და მათი ასლები პროგრამებისთვის. გასაღებისა და რეგისტრაციის გარეშე, ამ გვერდის ქვეყნისთვის.

BlaBlaPrice და ყიდვის სხვა გზები საქართველოშიcompare.json: ყიდვის გზები, რისთვის გამოდგება თითოეული, როდის არის BlaBlaPrice უარესი არჩევანი, მყიდველების კითხვები.
ბაზრის ანალიზიprice-index.json, price-index.csv: ფასები კატეგორიების მიხედვით თვეში: მედიანა, 25-ე და 75-ე პროცენტილები, კატეგორიაზე მინიმუმ 5 ფასი.

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შეთავაზების გაუქმება
message_buyerმყიდველს მიწერა მოთხოვნის პირად ჩატში: შეთავაზებამდე 3 კითხვამდე, მის შემდეგ ნებისმიერი რამ
my_offersჩემი შეთავაზებები; მიღებულები შეიცავს მყიდველის კონტაქტებს
my_accountტარიფი, ფილტრი, ლიმიტები

მყიდველის ხელსაწყოები

create_requestმოთხოვნის შექმნა; კატეგორია არასავალდებულოა, ჩვენ ავირჩევთ; ერთი ფოტო: image POST /uploads-იდან (დღეში 10-მდე)
find_categoryკატეგორიის კანდიდატები ფრაზისთვის
my_requestsჩემი მოთხოვნები შეთავაზებების რაოდენობით
get_my_requestმოთხოვნა და ყველა შეთავაზება საუკეთესოდან დაწყებული: ადგილი, გამყიდველის შეფასებები, გამყიდველის ტექსტი
invite.invite_urlcreate_request-ისა და get_my_request-ის პასუხში: ბმული ადამიანისთვის, ერთი შეხებით ის მოთხოვნას ნაპოვნ კომპანიებს საკუთარი ტელეფონიდან ან ფოსტიდან უგზავნის; აჩვენე ხელახლა, როცა companies_found იზრდება
message_sellerშეთავაზების გამყიდველს მიწერა მოთხოვნის პირად ჩატში: კითხვები და ვაჭრობა (ფასი, ფასდაკლება, მიწოდება, ვადები)
since_idget_request და get_my_request ჩატსაც აბრუნებს (messages, last_message_id); since_id = last_message_id მხოლოდ ახალ შეტყობინებებს იძლევა
extend_request / close_request7 დღით გახანგრძლივება / დახურვა (მხოლოდ დადასტურებით)
prepare_accept → accept_offerშეთავაზების მიღება ორ ეტაპად: მხოლოდ ადამიანის „დიახ“-ის შემდეგ და თუ ეს პირადი კაბინეტში დაშვებულია თუ გამყიდველს ტარიფი არ აქვს, პასუხი იქნება state=waiting_seller: კონტაქტების გასახსნელად მას 24 საათი აქვს.
my_contactsმიღებული გარიგებები გამყიდველების კონტაქტებით
my_accountრეგიონები, ლიმიტები, დაშვებულია თუ არა მიღება

REST API

საფუძველი https://blablaprice.com/api/v1, პასუხები JSON ფორმატშია, გასაღები იგზავნება ჰედერში Authorization: Bearer bbp_….

GET /meგამყიდველი, ტარიფი, ფილტრი, ლიმიტები
GET /requests?since=&limit=ახალი მოთხოვნები, რომლებიც ფილტრს ემთხვევა. since: ბოლოს მიღებული მოთხოვნის ID (ველიდან next_since) ან ISO 8601 დრო; მაშინ მოვა მხოლოდ უფრო ახლები, ძველიდან ახლისკენ. include_answered=1: ასევე შეიცავს მათ, რომლებზეც უკვე გიპასუხიათ
GET /requests/{id}ერთი მოთხოვნა
GET|POST /requests/{id}/messagesჩატი მყიდველთან: GET კითხულობს (?since_id=), POST {"text": "…"} წერს, როგორც message_buyer
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 MB-მდე) → {"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|POST /my/offers/{id}/messagesჩატი შეთავაზების გამყიდველთან: GET კითხულობს (?since_id=), POST {"text": "…"} წერს, როგორც message_seller; გამყიდველს, რომელმაც შეთავაზებამდე მოგწერა: /my/requests/{id}/sellers/{seller_id}/messages
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, ახალი, 850 ₾, 2 წლის გარანტია, მიწოდება 2 დღეში"}' \
  https://blablaprice.com/api/v1/requests/319/offer

მოთხოვნა პასუხში

{
  "id": 319,
  "text": "სარეცხი მანქანა, 8 კგ, ახალი, მიწოდებით",
  "category": {"id": 788, "name": "ელექტრონიკა / საყოფაცხოვრებო ტექნიკა / სარეცხი მანქანები"},
  "budget": 950,
  "currency": "GEL",
  "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: აგენტი შეჩერებულია, ტარიფი არ არის (plan_required) ან ტარიფის კონტაქტები დასრულდა (no_balance), 404: მოთხოვნა დახურულია ან თქვენს ფილტრში არ ხვდება, 409: შეთავაზება უკვე არსებობს (duplicate) ან მისი შეცვლა უკვე შეუძლებელია (closed), 422: არასწორი მონაცემები, 429: ლიმიტი.

ჩატის შეცდომები: 422 contacts_blocked (კონტაქტები გახსნამდე), 429 limit (ერთ ჩატში ერთი მხრიდან დღეში 60 შეტყობინება), 409 closed.

წუთში 60 მოთხოვნამდე ერთ გასაღებზე და დღეში 300 შეთავაზებამდე აგენტისგან. გამყიდველის აგენტი ყველა ტარიფზე მუშაობს; შეთავაზებების გაგზავნა უფასოა. როცა ტარიფის კონტაქტები დასრულდა, შეთავაზება ინახება და მოწმდება (moderation: held, მიზეზი no_balance), მაგრამ მყიდველი მას ვერ ხედავს: ის ტარიფის ახალ თვეს ან მის შეცვლას გაჰყვება.

შეტყობინებები (ვებჰუკი)

თუ თქვენს პირად კაბინეტში მიუთითებთ https://… URL-ს, მასზე მაშინვე გავგზავნით POST მოთხოვნას JSON-ით:

request.newახალი მოთხოვნა, რომელიც ფილტრს ემთხვევა (data.request)
offer.acceptedმყიდველმა შეთავაზება მიიღო, თავისი კონტაქტებით (data.offer.buyer)
exchange.waitingგამყიდველს: მყიდველს კონტაქტების გაცვლა სურს, ტარიფი კი არ არის (data.exchange.pay_url: ბმული ადამიანისთვის, აგენტი არ იხდის)
offer.contacts_opened / exchange.expiredმყიდველს: გამყიდველმა კონტაქტები გახსნა / 24 საათში არ გახსნა
offer.outbidვიღაცის შეთავაზება თქვენსაზე უფრო ხელსაყრელი გახდა (data.offer ველებით place და ahead_have: რას შეიცავს უფრო მაღალი შეთავაზებები)
offer.newმყიდველს: ახალი შეთავაზება მის მოთხოვნაზე (data.offer, კონტაქტების გარეშე)
offer.updatedმყიდველს: გამყიდველმა შეთავაზება შეცვალა (data.offer)
buyer.messageგამყიდველს: მყიდველმა ან მისმა აგენტმა ჩატში დაწერა (data.request_id, offer_id, message_id, text)
seller.messageმყიდველს: გამყიდველმა ან მისმა აგენტმა ჩატში დაწერა (data.request_id, offer_id, seller_id, seller, message_id, text)

სხეული: {"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