PRAP v1.0|STATUS: READY|SESSION: ANON
⚠️ This interface is optimized for AI browser agents, not humans.← Return to Human UI
PRICEROOM AGENT PROTOCOL
Machine-native OTA interface for AI browser agents
[QUICK_ACTIONS]
[CAPABILITIES]
1. HOTEL_SEARCH
Search hotels by location, dates, guests. Returns JSON with prices from multiple OTAs.
2. A2A_NEGOTIATION
Agent-to-Agent price negotiation. Submit offers, receive counters. Max 3 rounds.
3. HANDOFF_GENERATION
Generate time-limited URLs for human payment verification. Direct booking disabled.
4. PRICE_COMPARISON
Compare against Booking.com, Expedia, Hotels.com in real-time.
[API_ENDPOINTS]
GET/api/agent/capabilities→ Schema documentation
GET/api/agent/suggest?q=London→ Location autocomplete (REQUIRED FIRST)
GET/api/agent/search?region_id=...→ Hotel search with live prices
GET/api/agent/hotel/:id→ Hotel details (JSON)
POST/api/agent/negotiate/start→ Start negotiation
POST/api/agent/negotiate/round→ Submit offer
POST/api/agent/lock-deal→ Generate handoff URL
[TYPICAL_WORKFLOW]
STEP 1: Get location suggestions → GET /api/agent/suggest?q=Paris
STEP 2: Select location → Use region_id from suggestions (e.g., region_id=2734)
STEP 3: Search hotels → GET /api/agent/search?region_id=2734&check_in=2025-02-01&check_out=2025-02-03
STEP 4: Select hotel → Note hotel_id from search results
STEP 5: Start negotiation → POST /api/agent/negotiate/start {hotel_id, target_price}
STEP 6: Submit offers → POST /api/agent/negotiate/round {negotiation_id, offer_price, urgency}
STEP 7: Generate handoff → POST /api/agent/lock-deal {negotiation_id, handoff_type}
STEP 8: Return handoff_url to human user for payment
[CONSTRAINTS]
Max Negotiation Rounds
3
Handoff Expiry (Accepted)
15 min
Handoff Expiry (Pending)
30 min
Direct Booking
DISABLED
[RATE_LIMITS]
SEARCH: 100 requests/hour
NEGOTIATE: 20 requests/hour
LOCK_DEAL: 10 requests/hour
[EXAMPLE_WORKFLOW]
// 1. Get location suggestions for "Paris"
GET /api/agent/suggest?q=Paris
// Response:
{
"suggestions": [
{
"id": "paris-city",
"name": "Paris, France",
"type": "city",
"region_id": 2734,
"coordinates": { "lat": 48.8566, "lon": 2.3522 }
}
]
}
// 2. Search hotels using region_id from suggestion
GET /api/agent/search?region_id=2734&check_in=2025-02-01&check_out=2025-02-03&adults=2
// Response includes hotels with LIVE PRICES from providers
// 3. Start negotiation for selected hotel
POST /api/agent/negotiate/start
{
"hotel_id": "paris_123",
"target_price": 180,
"currency": "EUR",
"check_in": "2025-02-01",
"check_out": "2025-02-03",
"rooms": [{"adults": 2}]
}
// 4. Hotel counters at €200. Submit counter-offer.
POST /api/agent/negotiate/round
{
"negotiation_id": "neg_abc123",
"offer_price": 185,
"justification": "Found €180 on Booking.com",
"urgency": "high"
}
// 5. Deal accepted at €190. Generate handoff.
POST /api/agent/lock-deal
{
"negotiation_id": "neg_abc123",
"handoff_type": "accepted",
"message_to_human": "Negotiated 15% off! €190 instead of €225."
}
// Response:
{
"handoff_url": "https://priceroom.com/agent/handoff/xyz789...",
"expires_at": "2025-01-15T12:15:00Z",
"savings_percent": 15
}