Developer API

Build on the Propeter Platform

REST API, webhooks, and SDKs to integrate Propeter’s rate intelligence and booking data into your own systems.

Base URL

https://api.propeter.com/v1

All API requests must be made over HTTPS. HTTP requests will be rejected. The API is versioned — the current stable version is v1.

Authentication

Propeter uses OAuth 2.0 Client Credentials flow for server-to-server API access. Include your access token in the Authorization header.

Request an access token

POST https://auth.propeter.com/oauth/token

{
  "grant_type": "client_credentials",
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET",
  "scope": "rates:read reservations:read rooms:read"
}

Use the token

Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...

Tokens expire after 3600 seconds (1 hour). Your application should cache the token and request a new one before expiry.

Rates API

GET/rates

Returns AI-recommended rates for all room types across a date range. Includes 13-stage trace breakdown per room/date combination.

Query Parameters

ParameterTypeRequiredDescription
property_idstringRequiredYour property UUID
check_indate (YYYY-MM-DD)RequiredStart of date range
check_outdate (YYYY-MM-DD)RequiredEnd of date range (exclusive)
room_type_idstringOptionalFilter by room type UUID
include_tracebooleanOptionalInclude 13-stage rate trace (default: false)

Response

{
  "data": [
    {
      "date": "2026-04-15",
      "room_type_id": "rt_deluxe_001",
      "room_type_name": "Deluxe Room",
      "recommended_rate": 8500,
      "currency": "INR",
      "occupancy_forecast": 0.82,
      "confidence": 0.91,
      "rate_change_pct": 18.3,
      "strategy_note": "High demand weekend. Local event detected."
    }
  ],
  "meta": {
    "total": 60,
    "generated_at": "2026-04-10T08:14:32Z",
    "next_update": "2026-04-10T12:14:32Z"
  }
}
GET/rates/trace

Returns the full 13-stage rate engine trace for a specific room type and date. Shows each stage's input, output, and adjustment.

{
  "property_id": "prop_abc123",
  "room_type_id": "rt_deluxe_001",
  "date": "2026-04-15",
  "stages": [
    { "stage": "base_rate", "input": 7200, "output": 7200, "applied": true },
    { "stage": "inventory_adjust", "input": 7200, "output": 7560, "applied": true, "reason": "Low remaining inventory (+5%)" },
    // ... all 13 stages
    { "stage": "tax_and_fee", "input": 8120, "output": 8500, "applied": true }
  ],
  "final_rate": 8500
}

Reservations API

GET/reservations

List reservations for a property. Supports filtering by date range, status, and booking source.

ParameterTypeRequiredDescription
property_idstringRequiredProperty UUID
arrival_fromdateOptionalFilter by arrival date
arrival_todateOptionalFilter by arrival date
statusstringOptionalconfirmed / cancelled / checked_in / checked_out
sourcestringOptionaldirect / ota_booking / ota_expedia / ota_airbnb
limitintegerOptionalMax 100. Default 20.
cursorstringOptionalPagination cursor from previous response
POST/reservations

Create a reservation programmatically (for PMS sync and channel manager integration).

{
  "property_id": "prop_abc123",
  "room_type_id": "rt_deluxe_001",
  "room_id": "room_204",
  "check_in": "2026-04-15",
  "check_out": "2026-04-18",
  "rate_per_night": 8500,
  "currency": "INR",
  "guest": {
    "first_name": "Arjun",
    "last_name": "Mehta",
    "email": "arjun@example.com",
    "phone": "+919876543210"
  },
  "source": "direct",
  "notes": "Late check-in requested"
}

Rooms & Availability

GET/availability

Returns real-time availability by room type and date range. Used for booking engine integration.

{
  "data": [
    {
      "date": "2026-04-15",
      "room_types": [
        {
          "id": "rt_deluxe_001",
          "name": "Deluxe Room",
          "total_rooms": 12,
          "available": 4,
          "rate": 8500,
          "restrictions": { "min_stay": 1, "stop_sell": false }
        }
      ]
    }
  ]
}

Reports API

GET/reports/revpar

Returns RevPAR, ADR, occupancy, and TRevPAR data for a date range. Aggregated daily, weekly, or monthly.

Webhook Events

Register a webhook URL in your Propeter dashboard. We'll POST a signed JSON payload to your endpoint when events occur.

reservation.created
Fired when a new reservation is confirmed (direct booking or PMS sync).
reservation.cancelled
Fired when a reservation is cancelled. Includes cancellation reason and policy applied.
rate.updated
Fired every 4 hours when the AI Rate Engine recalculates recommended rates. Payload includes changed rates only.
availability.changed
Fired when room availability changes due to booking, cancellation, or manual block.
guest.loyalty_tier_changed
Fired when a guest's loyalty tier changes (e.g., Silver → Gold). Includes new tier and points balance.

Rate Limits

PlanRequests / MinuteRequests / Day
Starter6050,000
Professional300500,000
EnterpriseCustomUnlimited

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Exceeding limits returns HTTP 429.

SDKs & Libraries

📦

Node.js / TypeScript

npm install @propeter/sdk

Full TypeScript types. Async/await. Auto-retry on 429.

🐍

Python

pip install propeter-sdk

Sync + async. Type hints. Available on PyPI.

Java

Maven artifact available. Spring Boot integration guide included.

🌐

REST (Any Language)

OpenAPI 3.0 spec available. Import into Postman, Insomnia, or any API client.

Ready to integrate?

API access is available on Professional and Enterprise plans. Contact us to get your API credentials.

Get API Access