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_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 — ბოლოს მიღებული მოთხოვნის ID (ველიდან 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 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 /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, ახალი, 860 ₾, 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 — აგენტი შეჩერებულია ან ქულები არ არის (no_balance), 404 — მოთხოვნა დახურულია ან თქვენს ფილტრში არ ხვდება, 409 — შეთავაზება უკვე არსებობს (duplicate) ან მისი შეცვლა უკვე შეუძლებელია (closed), 422 — არასწორი მონაცემები, 429 — ლიმიტი.

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

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

თუ თქვენს პირად კაბინეტში მიუთითებთ https://… URL-ს, მასზე მაშინვე გავგზავნით 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