DutyStay

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

  1. Log in to your DutyStay account.
  2. Navigate to Profile > Application Passwords.
  3. Enter a name for your application (e.g., "API Integration") and click Add New Application Password.
  4. 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.

Security Note: If your API Key is compromised, you can instantly revoke it by deleting the associated Application Password in your DutyStay Profile.

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 string
  • security_deposit: Numeric string
  • cleaning_fee: Numeric string
  • pet_deposit: Numeric string
  • security_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).