The DutyStay API allows landlords, developers, and AI agents to programmatically read and update property availability and pricing. All endpoints reside under https://api.dutystay.com/v1/.
1. Authentication
Authentication is handled via a stateless, Base64-encoded API Key. You must pass this key in the X-API-Key header of every request.
Step 1: Generate an Application Password
- Log in to your DutyStay account.
- Navigate to Profile > Application Passwords.
- Enter a name for your application (e.g., "API Integration") and click Add New Application Password.
- Copy the generated 16-character password. Do not lose this; it will only be shown once.
Step 2: Generate Your API Key
Your API Key is a Base64-encoded string combining your account email and the Application Password, separated by a colon (email:password).
You can generate this quickly using your terminal:
echo -n "[email protected]:abcd efgh ijkl mnop" | base64
The resulting string (e.g., ZGV2ZWxvcGVyQGV4YW1wbGUuY29tOmFiY2QgZWZnaCBpamtsIG1ub3A=) is your permanent API Key.
2. Quick Start
List Your Properties
Fetch a lightweight catalog of all properties under your account. Use this to obtain your Property IDs.
curl -X GET https://api.dutystay.com/v1/properties \
-H "X-API-Key: YOUR_API_KEY"
Update a Property
Use a PATCH request to update specific fields. You only need to send the fields you wish to change.
curl -X PATCH https://api.dutystay.com/v1/properties/2972 \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price": "2195",
"available_on": "2026-06-23",
"status": "publish"
}'
3. Supported Update Fields
The following fields are accepted by the PATCH /properties/{id} endpoint:
status: "publish", "draft", or "private"available_on: Date string (e.g., "YYYY-MM-DD")minimum_stay: String (e.g., "30")price_basis: "month", "week", or "night"price: Numeric stringsecurity_deposit: Numeric stringcleaning_fee: Numeric stringpet_deposit: Numeric stringsecurity_deposit_refundable: Boolean (true/false)cleaning_fee_refundable: Boolean (true/false)pet_deposit_refundable: Boolean (true/false)
4. Support & Interactive Docs
For full schema definitions, required types, and a built-in testing interface, visit the Interactive API Explorer (Swagger).