Docs/Build with AI

AI Operations

TL;DR

POST to /v1/ai with an operation type: respond-to-guest, classify-intent, generate-listing, review-response, or price-suggestion. Returns AI-generated content.

Pre-built AI endpoints for common hospitality tasks. Send a request, get an AI-generated result with full context from the connected PMS. All endpoints accept JSON and return structured responses.

Phase 2 Preview

AI Operations endpoints are designed into the architecture and documented here for early feedback. They will go live in Phase 2. The request/response shapes below are final.

Respond to Guest

Generate a context-aware guest response draft. The AI pulls in property knowledge base, reservation details, and conversation history to craft an appropriate reply.

curl -X POST https://api.repull.dev/v1/ai/respond-to-guest \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "reservation_id": "res_abc123",
    "message": "Hi, is early check-in possible tomorrow?",
    "tone": "friendly",
    "language": "en"
  }'
{
  "id": "aiop_r1k2m3",
  "type": "respond-to-guest",
  "response": {
    "draft": "Hi! Thanks for reaching out. Early check-in is available tomorrow from 1 PM. Would you like me to arrange that for you?",
    "confidence": 0.94,
    "sources": ["knowledge_base", "reservation_details", "availability_calendar"],
    "suggested_actions": ["confirm_early_checkin", "offer_luggage_storage"]
  }
}

Classify Intent

Classify an incoming guest message into an intent category. Useful for routing messages, triggering automations, or prioritizing urgent requests.

curl -X POST https://api.repull.dev/v1/ai/classify-intent \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "The hot water is not working and we have been waiting for 2 hours",
    "reservation_id": "res_abc123"
  }'
{
  "id": "aiop_c4n5p6",
  "type": "classify-intent",
  "result": {
    "intent": "maintenance_issue",
    "confidence": 0.97,
    "urgency": "high",
    "sentiment": "frustrated",
    "categories": ["maintenance", "hot_water", "complaint"],
    "suggested_priority": 1
  }
}

Generate Listing

Generate or optimize a property listing title and description. Provide property details and get SEO-optimized copy tailored for each platform.

curl -X POST https://api.repull.dev/v1/ai/generate-listing \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "property_id": "prop_xyz789",
    "platform": "airbnb",
    "style": "professional",
    "highlights": ["ocean view", "newly renovated", "walk to beach"]
  }'
{
  "id": "aiop_g7h8j9",
  "type": "generate-listing",
  "result": {
    "title": "Stunning Oceanfront Retreat — Newly Renovated, Steps to Beach",
    "description": "Wake up to panoramic ocean views in this beautifully renovated retreat...",
    "seo_keywords": ["oceanfront", "beach house", "vacation rental"],
    "character_count": { "title": 58, "description": 1842 }
  }
}

Review Response

Generate a professional reply to a guest review. The AI considers the review sentiment, your property details, and best practices for public responses.

curl -X POST https://api.repull.dev/v1/ai/review-response \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "review_text": "Great location but the WiFi was unreliable during our stay.",
    "rating": 4,
    "property_id": "prop_xyz789",
    "tone": "professional"
  }'
{
  "id": "aiop_v1w2x3",
  "type": "review-response",
  "result": {
    "draft": "Thank you for your kind words about the location! We apologize for the WiFi issues during your stay. We have since upgraded to a dedicated fiber connection to ensure reliable connectivity for all guests. We would love to welcome you back!",
    "sentiment_detected": "mixed_positive",
    "issues_addressed": ["wifi_reliability"]
  }
}

Price Suggestion

Get dynamic pricing recommendations based on seasonality, local events, competitor rates, and historical occupancy data.

curl -X POST https://api.repull.dev/v1/ai/price-suggestion \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "property_id": "prop_xyz789",
    "date_range": {
      "start": "2025-07-01",
      "end": "2025-07-31"
    }
  }'
{
  "id": "aiop_p4q5r6",
  "type": "price-suggestion",
  "result": {
    "suggestions": [
      { "date": "2025-07-01", "current_price": 150, "suggested_price": 189, "reason": "Independence Day weekend demand" },
      { "date": "2025-07-04", "current_price": 150, "suggested_price": 219, "reason": "Peak holiday pricing" },
      { "date": "2025-07-15", "current_price": 150, "suggested_price": 165, "reason": "Mid-week summer baseline" }
    ],
    "avg_increase_pct": 18.2,
    "confidence": 0.88
  }
}

Combine with webhooks

Use the classify-intent endpoint with webhooks to automatically triage incoming messages. When a message.received event fires, classify the intent and route high-urgency issues to your on-call team.
AI