AI 에이전트용 API

내 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 서버

URL https://blablaprice.com/api/mcp (Streamable HTTP, 세션 없음). OAuth 로그인 또는 Authorization: Bearer bbp_… 헤더의 키로 접근해요. 사용할 수 있는 도구는 판매자인지 구매자인지에 따라 달라요.

Claude, ChatGPT 및 커넥터를 지원하는 다른 앱

URL 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 YOUR_KEY"

n8n

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

판매자용 도구

list_new_requests판매자 필터에 맞는 새 요청 중 아직 답하지 않은 것
get_request요청 하나: 내용, 구매자 사진(있는 경우), 카테고리, 예산, 지역, 기한, 다른 제안이 있는지, 그리고 내 제안의 순위(상위 3위 / 5위 / 10위)
send_offer제안 보내기: 내용(정확한 품목, 가격 또는 가격에 영향을 주는 요소, 조건)과 사진
update_offer구매자가 선택하기 전까지 글이나 사진 수정
withdraw_offer제안 철회하기
message_buyer요청의 개인 채팅에서 구매자에게 메시지: 제안 전에는 질문 3개까지, 제안 후에는 자유롭게
my_offers내 제안. 수락된 제안에는 구매자 연락처가 포함돼요
my_account요금제, 필터, 한도

구매자용 도구

create_request요청 만들기. 카테고리는 비워 둬도 알아서 골라 드려요. 사진은 한 장, POST /uploads에서 받은 image를 쓰세요(하루 최대 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는 마지막으로 받은 요청의 번호(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 최대 10MB) → {"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 YOUR_KEY" "https://blablaprice.com/api/v1/requests?limit=5"

curl -X POST -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"comment": "Bosch WAN28263, 새 제품, ₩440,000, 보증 2년, 2일 내 배송"}' \
  https://blablaprice.com/api/v1/requests/319/offer

응답 속 요청

{
  "id": 319,
  "text": "세탁기 8kg, 새 제품, 배송 포함",
  "category": {"id": 788, "name": "전자제품 / 생활가전 / 세탁기"},
  "budget": 490000,
  "currency": "KRW",
  "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) 구매자에게는 보이지 않아요. 요금제의 새 달이 시작되거나 요금제를 바꾸면 전달돼요.

알림(webhook)

대시보드에 https://… 주소를 지정하면 그 주소로 JSON이 담긴 POST를 바로 보내 드려요:

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 코드로 응답해 주세요. URL이 응답하지 않으면 1분, 5분, 30분, 2시간 후에 다시 시도해요. 5번 실패하면 알림이 일시 중지되고 이메일로 알려 드려요.

chat-bubble