> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.propexo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.propexo.com/_mcp/server.

# Query Realtime Appointment Availability: RealPage Partner Exchange

POST https://api.propexo.com/v1/appointment-availability/realpage_rpx/
Content-Type: application/json

Query Realtime Appointment Availability: RealPage Partner Exchange

Reference: https://docs.propexo.com/api-reference/real-page-app-partner/appointments/query-realtime-appointment-availability-real-page-partner-exchange

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.propexo.com` (Production, default)
- `https://api.sandbox.propexo.com` (Sandbox)

## Request

### Body (application/json)

This endpoint expects a _v1_appointment-availability_realpage_rpx__post_input.

- `integration_id` (string, required) — The Propexo unique identifier for the integration
- `property_id` (string, required) — The Propexo unique identifier for the property
- `availability_start_date` (V1AppointmentAvailabilityRealpageRpxPostInputAvailabilityStartDate, required) — The start date of the availability to query. RealPage Partner Exchange will return results starting at midnight of this date in the local timezone of the property.
- `availability_duration_days` (integer, required) — The duration of the availability query, in days
- `employee_id` (string, optional) — The Propexo unique identifier for the employee. The API will only return availability for this employee. If not provided, availability will be returned for all employees.
- `appointment_duration_minutes` (integer, optional, default: 30) — The duration of the appointment, in minutes. RealPage Partner Exchange does not provide a default appointment duration. A value of 30 minutes is assumed if this field is not provided.

## Response

### 200

Successful response

- `meta` (V1AppointmentAvailabilityRealpageRpxPostOutputMeta, required)
- `result` (list of V1AppointmentAvailabilityRealpageRpxPostOutputResultItems, required)

## Errors

### 400 Bad Request Error

Bad Request

- `error` (ErrorResponseError, required)

## Types

### V1AppointmentAvailabilityRealpageRpxPostInputAvailabilityStartDate

The start date of the availability to query. RealPage Partner Exchange will return results starting at midnight of this date in the local timezone of the property.

### V1AppointmentAvailabilityRealpageRpxPostOutputMeta

- `job_id` (string, required)

### V1AppointmentAvailabilityRealpageRpxPostOutputResultItems

- `last_seen` (string, required) — The date the record was last seen from the PMS
- `calendar_type` (enum, required) — The type of calendar
  - Allowed values: `AGENT_CALENDAR`, `PROPERTY_CALENDAR`, `ENTRATA_SELF_GUIDED_TOUR_CALENDAR`
- `x_agent_id` (string, required, nullable) — The external ID of the agent from the integration vendor
- `agent_first_name` (string, required, nullable) — The first name associated with the employee
- `agent_last_name` (string, required, nullable) — The last name associated with the employee
- `default_appointment_length` (double, required, nullable) — A default duration for an appointment on this calendar, in minutes
- `minimum_appointment_lead_time` (double, required, nullable) — The minimum lead time before which you can book an appointment on this calendar, in minutes
- `timezone` (string, required, nullable) — The timezone of the calendar, if such metadata is available. Please contact Propexo Support if you are working with properties outside of the United States and Canada as there may be options for populating this field depending on your business case and integration vendor.
- `calendar_days` (list of V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItems, required)
- `x_property_id` (string, required, nullable) — The external ID of the property from the integration vendor

### ErrorResponseError

- `code` (string, required)
- `message` (string, required)
- `details` (map from string to any, optional)

### V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItems

- `date` (V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItemsDate, required) — Date of the availability
- `day_of_week` (string, required) — Day of the week
- `opening_time` (string, required, nullable) — The routine opening time for when the first appointment can be booked into this calendar
- `closing_time` (string, required, nullable) — The routine closing time for when the last appointment must complete when being booked into this calendar
- `simultaneous_appointment_mode` (enum, required) — What kind of simultaneous or double booked appointments are allowed on this calendar
  - Allowed values: `SINGLE`, `MULTIPLE`, `UNLIMITED`, `UNKNOWN`
- `max_simultaneous_appointments` (double, required, nullable) — The maximum number of simultaneous appointments allowed at the same moment in time on this calendar
- `available_slots` (list of V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItemsAvailableSlotsItems, required)

### V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItemsDate

Date of the availability

### V1AppointmentAvailabilityRealpageRpxPostOutputResultItemsCalendarDaysItemsAvailableSlotsItems

- `start` (string, required) — The start time of the slot
- `end` (string, required, nullable) — The end time of the slot which may not be available in all cases

## Examples

**Request**

```json
{
  "integration_id": "intg_987654321",
  "property_id": "prop_123456789",
  "availability_start_date": "2024-01-15T00:00:00-05:00",
  "availability_duration_days": 3
}
```

**Response**

```json
{
  "meta": {
    "job_id": "job_20240115_001"
  },
  "result": [
    {
      "last_seen": "2024-01-14T18:00:00-05:00",
      "calendar_type": "AGENT_CALENDAR",
      "x_agent_id": "agent_456789",
      "agent_first_name": "Emily",
      "agent_last_name": "Johnson",
      "default_appointment_length": 30,
      "minimum_appointment_lead_time": 60,
      "timezone": "America/New_York",
      "calendar_days": [
        {
          "date": "2024-01-15",
          "day_of_week": "Monday",
          "opening_time": "09:00:00",
          "closing_time": "17:00:00",
          "simultaneous_appointment_mode": "SINGLE",
          "max_simultaneous_appointments": 1,
          "available_slots": [
            {
              "start": "09:00:00",
              "end": "09:30:00"
            },
            {
              "start": "10:00:00",
              "end": "10:30:00"
            },
            {
              "start": "14:00:00",
              "end": "14:30:00"
            }
          ]
        }
      ],
      "x_property_id": "ext_prop_123456"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.propexo.com/v1/appointment-availability/realpage_rpx/"

payload = {
    "integration_id": "intg_987654321",
    "property_id": "prop_123456789",
    "availability_start_date": "2024-01-15T00:00:00-05:00",
    "availability_duration_days": 3
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.propexo.com/v1/appointment-availability/realpage_rpx/';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"integration_id":"intg_987654321","property_id":"prop_123456789","availability_start_date":"2024-01-15T00:00:00-05:00","availability_duration_days":3}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.propexo.com/v1/appointment-availability/realpage_rpx/"

	payload := strings.NewReader("{\n  \"integration_id\": \"intg_987654321\",\n  \"property_id\": \"prop_123456789\",\n  \"availability_start_date\": \"2024-01-15T00:00:00-05:00\",\n  \"availability_duration_days\": 3\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.propexo.com/v1/appointment-availability/realpage_rpx/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"integration_id\": \"intg_987654321\",\n  \"property_id\": \"prop_123456789\",\n  \"availability_start_date\": \"2024-01-15T00:00:00-05:00\",\n  \"availability_duration_days\": 3\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.propexo.com/v1/appointment-availability/realpage_rpx/")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"integration_id\": \"intg_987654321\",\n  \"property_id\": \"prop_123456789\",\n  \"availability_start_date\": \"2024-01-15T00:00:00-05:00\",\n  \"availability_duration_days\": 3\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.propexo.com/v1/appointment-availability/realpage_rpx/', [
  'body' => '{
  "integration_id": "intg_987654321",
  "property_id": "prop_123456789",
  "availability_start_date": "2024-01-15T00:00:00-05:00",
  "availability_duration_days": 3
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.propexo.com/v1/appointment-availability/realpage_rpx/");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"integration_id\": \"intg_987654321\",\n  \"property_id\": \"prop_123456789\",\n  \"availability_start_date\": \"2024-01-15T00:00:00-05:00\",\n  \"availability_duration_days\": 3\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "integration_id": "intg_987654321",
  "property_id": "prop_123456789",
  "availability_start_date": "2024-01-15T00:00:00-05:00",
  "availability_duration_days": 3
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.propexo.com/v1/appointment-availability/realpage_rpx/")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```