CiiRUS-API QuickStart Guide
Start-to-Finish Integration in 6 Core Steps
Overview
This guide shows you how to go from zero to successfully creating a reservation with the CiiRUS-API. It follows the recommended integration flow and assumes youโve received your API Username and API Password via your onboarding email.
๐งพ Step 0: Authenticate Every Request
All requests must include Basic
Authorization header.
Example:
If your credentials are:
PartnerDemo:Secret123
Your base64 encoded string would be:
UGFydG5lckRlbW86U2VjcmV0MTIz
Then you would include this in your headers:
Authorization: Basic UGFydG5lckRlbW86U2VjcmV0MTIz
๐ Step 1: Get Your Suppliers
Each partner may be connected to one or more SuppliersโCiiRUS clients who provide inventory.
Endpoint:
GET /v2024.07.31/suppliers
Use Case:
- Retrieve suppliers and Property Manager specific details.
- Store
management_company_user_id
for mapping. - Verify active suppliers using the
active=true
query parameter. - Filter inventory or reservations by supplier in later requests.
๐๏ธ Step 2: Get and Map Units
Once you know which suppliers you're connected to, the next step is to fetch their units.
Endpoint:
GET /v2024.07.31/units?management_company_user_id=42330
Use Case:
- Retrieve units and basic unit details.
- Map CiiRUS units to your local property data structure.
- Filter or ignore inactive units (
"supplier_enabled": false
).
The units returned here which are
"supplier_enabled": true
but"agent_enabled": false
have been enabled by the supplier but still require activation on your end to unlock full API access.
โ
Step 3: Enable Units from Your Side
Even though suppliers have enabled the units, your API connection must also explicitly enable them as well.
Endpoint:
PUT /v2024.07.31/units
Sample Request Body:
[
{
"enabled": true,
"unit_id": 219264
},
{
"enabled": true,
"unit_id": 219266
},
{
"enabled": true,
"unit_id": 222033
}
]
Skipping this step will result in restricted API behavior for those units.
๐ Step 4: Retrieve Unit Content (Optional but Recommended)
After enabling, you may want to retrieve supplemental details like:
- Unit Details:
/v2024.07.31/unit_details?management_company_user_id=42330
- Unit Images:
/v2024.07.31/unit_images?management_company_user_id=42330
- Unit Amenities:
/v2024.07.31/unit_amenities?management_company_user_id=42330
These endpoints will help populate your UI or listings.
๐ต Step 5: Get Real-Time Pricing & Availability
Now that units are fully enabled, use the /unit_quotes
endpoint to validate availability and calculate pricing.
Endpoint:
POST /v2024.07.31/unit_quotes
Sample Request:
POST /v2024.07.31/unit_quotes?management_company_user_id=42330 HTTP/1.1
Host: api.ciiruspartners.com
Content-Type: application/json
Authorization: Basic UGFydG5lckRlbW86U2VjcmV0MTIz
{
"details": {
"arrival": "2025-06-15",
"departure": "2025-06-20"
}
}
Sample Response:
{
"unit_quotes": [
{
"management_company_user_id": 0,
"error": {
"message": "{\"message\":\"Unit is not available for 5 nights. Valid stays: 0\"}"
}
},
{
"unit_id": 219265,
"type": "quote",
"management_company_user_id": 42330,
"details": {
"arrival": "2025-06-15T16:00:00",
"departure": "2025-06-20T10:00:00",
"added": "2025-06-02T21:19:37.6990038Z",
"expiration": "2025-06-02T00:00:00+00:00",
"guests": [
{
"type": "lead_guest",
"first_name": "Adult 1"
}
],
"number_of_adults": 1,
"number_of_children": 0,
"number_of_pets": 0,
"category_id": 16,
"early_check_in": false,
"late_check_out": false,
"owner_reservation": false
},
"financials": {
"rate_set_id": 75114,
"length_of_stay": false,
"pool_heat": false,
"currency": "USD",
"charges": [
{
"item": "Rental Rate",
"quantity": 1,
"type": "rental",
"value": 27500000000
},
{
"item": "Rental Rate Tax 1",
"applies_to_item": "Rental Rate",
"quantity": 1,
"type": "tax_one",
"value": 1925000000
},
{
"item": "Rental Rate Tax 2",
"applies_to_item": "Rental Rate",
"quantity": 1,
"type": "tax_two",
"value": 1375000000
},
{
"item": "Example Fee 1",
"code": "Fee1",
"applies_to_id": "7417",
"quantity": 1,
"type": "extra",
"value": 825000000
},
{
"item": "Example Fee 1 Tax 1",
"applies_to_item": "Example Fee 1",
"quantity": 1,
"type": "tax_one",
"value": 58000000
},
{
"item": "Example Fee 1 Tax 2",
"applies_to_item": "Example Fee 1",
"quantity": 1,
"type": "tax_two",
"value": 41000000
},
{
"item": "Example Fee 2",
"code": "Fee2",
"applies_to_id": "7418",
"quantity": 1,
"type": "extra",
"value": 1000000000
},
{
"item": "Example Fee 2 Tax 1",
"applies_to_item": "Example Fee 2",
"quantity": 1,
"type": "tax_one",
"value": 70000000
},
{
"item": "Example Fee 2 Tax 2",
"applies_to_item": "Example Fee 2",
"quantity": 1,
"type": "tax_two",
"value": 50000000
},
{
"item": "Example Fee 3",
"code": "Fee3",
"applies_to_id": "7419",
"quantity": 1,
"type": "extra",
"value": 1000000000
},
{
"item": "Example Fee 3 Tax 1",
"applies_to_item": "Example Fee 3",
"quantity": 1,
"type": "tax_one",
"value": 70000000
},
{
"item": "Example Fee 3 Tax 2",
"applies_to_item": "Example Fee 3",
"quantity": 1,
"type": "tax_two",
"value": 50000000
},
{
"item": "Fee Example 6",
"code": "Fee6",
"applies_to_id": "7422",
"quantity": 1,
"type": "extra",
"value": 500000000
},
{
"item": "Fee Example 6 Tax 1",
"applies_to_item": "Fee Example 6",
"quantity": 1,
"type": "tax_one",
"value": 35000000
},
{
"item": "Fee Example 6 Tax 2",
"applies_to_item": "Fee Example 6",
"quantity": 1,
"type": "tax_two",
"value": 25000000
},
{
"item": "Accidental Damage Insurance",
"code": "ADI",
"applies_to_id": "21728",
"quantity": 1,
"type": "extra",
"value": 7500000000
},
{
"item": "Daily Amount Fee Example",
"code": "DAY",
"applies_to_id": "24651",
"quantity": 1,
"type": "extra",
"value": 1750000000
},
{
"item": "Property Protection Fee",
"code": "CP-STD",
"applies_to_id": "25011",
"quantity": 1,
"type": "extra",
"value": 6500000000
}
],
"payment_schedule": [
{
"value": 50274000000,
"value_due": 50274000000,
"payment_type": "down_payment",
"payment_status": "due",
"due_date": "2025-06-02T00:00:00Z"
}
],
"total_value": 50274000000,
"payment_taken_by": 1
}
},
],
"paging": {
"next_page_url": "https://api.ciiruspartners.com/v2024.07.31/unit_quotes?page=2&page_size=25&management_company_user_id=42330",
"total_page_count": 3,
"page": 1,
"page_size": 25
}
}
๐งพ Step 6: Create a Reservation
Once you have a valid quote and confirmed availability, you're ready to create a reservation.
Endpoint:
POST /v2024.07.31/reservations
Sample Request:
{
"unit_id": 219265,
"management_company_user_id": 42330,
"reference": "YourAppsResID",
"details": {
"arrival": "2026-07-07T16:00:00",
"departure": "2026-07-10T10:00:00",
"guests": [
{
"type": "lead_guest",
"first_name": "Test",
"last_name": "Guest"
}
],
"number_of_adults": 1
}
}
Currency Format Notice
All currency values in the API are returned in fixed-point format using a scale of 10โธ. For example, a value of 100000000 represents 1.00. This ensures precision in financial calculations. Be sure to adjust your implementation accordingly when parsing or displaying amounts.
โ
You're Live!
With these steps, you've completed the core flow:
- Identify connected suppliers
- Map and enable units
- Retrieve unit metadata
- Retrieve pricing and availability
- Create reservations with ease
๐ก Tips
- Run
GET /v2024.07.31/suppliers
andGET /v2024.07.31/units
regularly to check for new or deactivated suppliers or inventory. - Log quote/reservation failures, including the
x-amz-meta-guid
from the Response header, and reach out for guidance if needed. - Don't forget to test your integration against edge cases like same-day arrivals or far-future bookings.
Updated about 20 hours ago