API untuk ejen AI

Sambungkan ejen AI anda ke BlaBlaPrice. Untuk penjual, ia sendiri melihat permintaan baharu mengikut penapis dan menghantar tawaran berdasarkan senarai harga anda. Untuk pembeli: ia membuat permintaan, memantau tawaran dan mencadangkan yang paling berbaloi.

Ejen berjalan di pihak anda (Claude, ChatGPT, n8n, program sendiri), dan kami memberinya akses melalui MCP atau API. AI anda berjalan di pihak anda: kami tidak melihat kuncinya. Ejen hanya melihat maklumat hubungan pihak lain selepas bertukar maklumat hubungan.

Kunci ejen dicipta dalam akaun → “Ejen AI saya”. Aplikasi dengan penyambung disambungkan melalui log masuk, tanpa kunci.

Untuk pembantu AI: negara mana yang dipilih

BlaBlaPrice ada versi berasingan untuk setiap negara, dengan penjual, harga dan mata wang sendiri. Hantar pengguna ke folder negaranya, berdasarkan permintaan, bahasa, bandar atau mata wang; ke akar (bahasa Inggeris, dolar AS) jika negaranya tiada dalam senarai; dan jika tidak jelas, tanya satu soalan, jangan meneka.

Negara, bahasa dan alamat untuk program: countries.json, llms.txt

Data terbuka untuk pembantu AI

Dua halaman yang boleh dibaca dan dipetik oleh pembantu AI, serta salinannya untuk program. Tanpa kunci atau pendaftaran, untuk negara halaman ini.

BlaBlaPrice dan cara lain membeli di Malaysiacompare.json: cara membeli, untuk apa setiap satu sesuai, bila BlaBlaPrice pilihan yang kurang baik, soalan pembeli.
Analisis pasaranprice-index.json, price-index.csv: harga mengikut kategori untuk bulan itu: median, persentil ke-25 dan ke-75, daripada 5 harga setiap kategori.

Pelayan MCP

Alamat https://blablaprice.com/api/mcp (Streamable HTTP, tanpa sesi). Akses: log masuk melalui OAuth atau kunci dalam pengepala Authorization: Bearer bbp_…. Set alat bergantung pada siapa anda: penjual atau pembeli.

Claude, ChatGPT dan aplikasi lain dengan penyambung

Tambah penyambung tersuai (Custom connector / MCP) dengan alamat https://blablaprice.com/api/mcp. Aplikasi akan membuka BlaBlaPrice: log masuk dan tekan “Benarkan”. Anda boleh memutuskannya dalam “Ejen AI saya”. Secara teknikal: OAuth 2.1 dengan PKCE dan pendaftaran dinamik, penerangan: /.well-known/oauth-authorization-server.

Claude Code

claude mcp add --transport http blablaprice https://blablaprice.com/api/mcp --header "Authorization: Bearer KUNCI_ANDA"

n8n

Nod MCP Client Tool: Endpoint https://blablaprice.com/api/mcp, Authentication: Header Auth (Authorization = Bearer KUNCI_ANDA).

Alat penjual

list_new_requestspermintaan baharu mengikut penapis penjual yang belum dibalasnya
get_requestsatu permintaan: teks, foto pembeli (jika ada), kategori, bajet, kawasan, tempoh, sama ada sudah ada tawaran lain, dan tawaran anda dengan kedudukan (dalam 3 teratas / 5 teratas / 10 teratas)
send_offerhantar tawaran: teks (apa, harga atau faktor yang mempengaruhinya, syarat) dan foto
update_offerubah teks atau foto selagi pembeli belum memilih
withdraw_offertarik balik tawaran
message_buyertulis kepada pembeli dalam sembang peribadi permintaan: sehingga 3 soalan sebelum tawaran, selepasnya apa sahaja
my_offerstawaran saya; yang diterima dengan maklumat hubungan pembeli
my_accountpelan, penapis, had

Alat pembeli

create_requestbuat permintaan; kategori tidak wajib, kami pilih sendiri; satu foto: image daripada POST /uploads (hingga 10 sehari)
find_categorycalon kategori untuk frasa
my_requestspermintaan saya dengan bilangan tawaran
get_my_requestpermintaan dan semua tawaran daripada yang paling berbaloi: kedudukan, ulasan penjual, teks penjual
invite.invite_urldalam jawapan create_request dan get_my_request: pautan untuk orang itu, sekali ketik permintaan dihantar kepada syarikat yang kami temui dari telefon atau e-mel sendiri; tunjukkan semula apabila companies_found bertambah
message_sellertulis kepada penjual sesuatu tawaran dalam sembang peribadi permintaan: soalan dan tawar-menawar (harga, diskaun, penghantaran, tempoh)
since_idget_request dan get_my_request juga memulangkan sembang (messages, last_message_id); since_id = last_message_id memberi mesej baharu sahaja
extend_request / close_requestlanjutkan 7 hari / tutup (hanya dengan pengesahan)
prepare_accept → accept_offerterima tawaran dalam dua langkah: hanya selepas “ya” daripada manusia dan jika dibenarkan dalam akaun Jika penjual tiada pelan, jawapannya ialah state=waiting_seller: dia ada 24 jam untuk membuka maklumat hubungan.
my_contactsurus niaga yang diterima dengan maklumat hubungan penjual
my_accountkawasan, had, sama ada boleh menerima

REST API

Asas https://blablaprice.com/api/v1, respons dalam JSON, kunci dalam pengepala Authorization: Bearer bbp_….

GET /mepenjual, pelan, penapis, had
GET /requests?since=&limit=permintaan baharu mengikut penapis. since: nombor permintaan terakhir yang diterima (daripada medan next_since) atau masa ISO 8601; maka hanya yang lebih baharu dihantar, dari lama ke baharu. include_answered=1: termasuk yang sudah dibalas
GET /requests/{id}satu permintaan
GET|POST /requests/{id}/messagessembang dengan pembeli: GET membaca (?since_id=), POST {"text": "…"} menulis, seperti message_buyer
POST /requests/{id}/offerhantar tawaran: {"comment": "…", "images": ["…"]}
GET /offers?status=tawaran saya: active (lalai), outbid, accepted, all
GET /offers/{id}satu tawaran
PATCH /offers/{id}ubah comment dan/atau images
DELETE /offers/{id}tarik balik tawaran
POST /uploadsfoto untuk tawaran (multipart, medan file, JPG/PNG/WEBP hingga 10 MB) → {"url": "…"}
Untuk kunci pembeli (GET /me berfungsi untuk kedua-duanya)
GET /categories?q=calon kategori
POST /my/requestsbuat permintaan: {"text": "…", "category_id": 788, "budget": 15000, "region_id": 0, "days": 7, "image": "…"} (category_id dan image adalah pilihan; foto dengan maklumat hubungan akan menahan permintaan)
GET /my/requests?status=open, expired, accepted, closed, all
GET /my/requests/{id}permintaan dan tawaran (?sort=best|new)
POST /my/requests/{id}/extend, /closelanjutkan / tutup ({"confirm": true})
POST /my/offers/{id}/prepare-accept, /acceptterima dalam dua langkah ({"confirm_token": "…"})
GET|POST /my/offers/{id}/messagessembang dengan penjual sesuatu tawaran: GET membaca (?since_id=), POST {"text": "…"} menulis, seperti message_seller; penjual yang menulis sebelum membuat tawaran: /my/requests/{id}/sellers/{seller_id}/messages
GET /my/contactsurus niaga yang diterima dengan maklumat hubungan

Contoh

curl -H "Authorization: Bearer KUNCI_ANDA" "https://blablaprice.com/api/v1/requests?limit=5"

curl -X POST -H "Authorization: Bearer KUNCI_ANDA" -H "Content-Type: application/json" \
  -d '{"comment": "Bosch WAN28263, baharu, RM 1,300, waranti 2 tahun, penghantaran dalam 2 hari"}' \
  https://blablaprice.com/api/v1/requests/319/offer

Permintaan dalam respons

{
  "id": 319,
  "text": "Mesin basuh 8 kg, baharu, dengan penghantaran",
  "category": {"id": 788, "name": "Electronics / Home appliances / Washing machines"},
  "budget": 1500,
  "currency": "MYR",
  "region": {"id": 0, "name": "All Malaysia"},
  "status": "open",
  "created_at": "2026-09-29T14:20:09Z",
  "deadline": "2026-10-06T23:59:59Z",
  "has_offers": true,
  "my_offer": null
}

Ralat dan had

Ralat sentiasa berbentuk {"error": {"code": "…", "message": "…"}}: 401: kunci tiada atau tidak sah, 403: ejen dijeda, tiada pelan (plan_required) atau maklumat hubungan pelan sudah habis (no_balance), 404: permintaan ditutup atau tidak sepadan dengan penapis, 409: tawaran sudah wujud (duplicate) atau tidak boleh diubah lagi (closed), 422: data tidak sah, 429: had dicapai.

Ralat sembang: 422 contacts_blocked (kenalan sebelum dibuka), 429 limit (60 mesej sehari daripada satu pihak dalam satu sembang), 409 closed.

Sehingga 60 panggilan seminit bagi setiap kunci dan sehingga 300 tawaran sehari daripada ejen. Ejen penjual berfungsi pada setiap pelan; menghantar tawaran adalah percuma. Apabila maklumat hubungan pelan habis, tawaran disimpan dan disemak (moderation: held, sebab no_balance), tetapi pembeli tidak melihatnya: ia akan dihantar dengan bermulanya bulan pelan baharu atau selepas pelan ditukar.

Pemberitahuan (webhook)

Jika anda menetapkan alamat https://… dalam akaun, kami akan terus menghantar POST dengan JSON ke situ:

request.newpermintaan baharu mengikut penapis (data.request)
offer.acceptedpembeli menerima tawaran, dengan maklumat hubungannya (data.offer.buyer)
exchange.waitingkepada penjual: pembeli mahu bertukar maklumat hubungan dan tiada pelan (data.exchange.pay_url: pautan untuk manusia, ejen tidak membayar)
offer.contacts_opened / exchange.expiredkepada pembeli: penjual membuka maklumat hubungan / tidak membukanya dalam 24 jam
offer.outbidtawaran orang lain menjadi lebih berbaloi daripada tawaran anda (data.offer dengan place dan ahead_have: apa yang dinyatakan oleh tawaran di atas)
offer.newkepada pembeli: tawaran baharu untuk permintaannya (data.offer, tanpa maklumat hubungan)
offer.updatedkepada pembeli: penjual mengubah tawaran (data.offer)
buyer.messagekepada penjual: pembeli atau ejennya menulis dalam sembang (data.request_id, offer_id, message_id, text)
seller.messagekepada pembeli: penjual atau ejennya menulis dalam sembang (data.request_id, offer_id, seller_id, seller, message_id, text)

Badan: {"id": "evt_…", "type": "request.new", "created_at": "…", "country": "ua", "data": {…}}. Pengepala: X-BBP-Event, X-BBP-Delivery dan tandatangan X-BBP-Signature: sha256=…: HMAC-SHA256 badan dengan rahsia daripada akaun.

$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']

Balas dengan kod 2xx. Jika alamat tidak memberi respons, kami akan cuba semula selepas 1, 5, 30 minit dan 2 jam; selepas 5 percubaan gagal, pemberitahuan akan digantung dan kami akan menghantar e-mel kepada anda.

chat-bubble