Download OpenAPI specification:Download
The HousingAnywhere API allows you to easily publish your listings on the largest rental accommodation platform globally. The API strongly advances data interoperability between HousingAnywhere and its partners. As property managers you can use the API to connect your inventory to the HousingAnywhere platform, enabling you to reach a far bigger target audience. Bookings take place on the HousingAnywhere platform and the API will ensure that partner systems are updated in real-time whenever one of your properties gets booked on the HousingAnywhere platform.
The HousingAnywhere API offers a range of possibilities. The API supplies a managed solution for storing and accessing property data such as media and listing details on HousingAnywhere.
Connected property managers can store and access information regarding the pricing and availability of all their rental units. This information is updated based on a predetermined frequency as updates are pulled by the HA platform.
Webhooks enable two-way integrations to ensure that information is kept synchronized between HousingAnywhere and systems that are already being used by property managers. By using these webhooks, bookings and cancellations can automatically be confirmed as they happen, and availability calendars are updated on the fly.
To get started, any user can request an API key. Every API request needs a private API key in query parameters as a part of authentication, which is unique to each client. Please contact our team to request your unique key. You can do so through the form at: https://housinganywhere.com/integrations
Authentication is done using a custom query parameter called 'api_key'.
We utilize cursor based pagination via the nextCursor query parameter. It takes an existing object ID value (see below) and returns objects.
limit optional, defaults to 20
A limit on the number of objects to be returned.
nextCursor optional
A cursor for use in pagination, it is an object ID that defines your place in the list. For instance, if you make a request and receive 20 objects with a <value> for nextCursor, subsequent calls include nextCursor=<value> in order to fetch the next page of the list.
Partner API requests are rate limited per endpoint and per API key using a token-bucket algorithm.
Most endpoints allow 5 requests per second with a burst of up to 10 requests.
GET /listings uses a stricter limit of 1 request per second with a burst of up to 5 requests.
When you exceed the limit, the API responds with HTTP 429 Too Many Requests and asks you to retry in a few seconds. Back off and retry rather than sending requests in a tight loop.
If you need additional technical support after going through our technical documentation, our team of international account managers will be eager to facilitate you.
Creates a listing on the HousingAnywhere platform. When creating a single listing, your request must include the fields marked as mandatory, other fields are optional but encouraged.
| price required | integer <int32> Price of the appartment in lowest denomination in given currency. e.g: Cents if currency is Euro |
| pricingType | integer (PricingType) Enum: "Flat = 1" "Monthly = 2" |
| monthlyPrices | object (MonthlyPrices) Listing price is set on a monthly basis. They keys denote the months, 1 to 12, 1 represents January, 2 for February and son on. This field is required when |
| currencyCode required | string Currency code of the currency used in ISO 4217 format. |
| address required | object (Address) The address of the listing by the house number, street, city, state, postal code and the country code. |
| type required | integer (Type) Enum: "House = 1" "Building = 2" "Apartment = 3" |
| kind required | integer (Kind) Enum: "EntirePlace = 1" "PrivateRoom = 2" "SharedRoom = 3" |
| description required | string |
| minimumStayMonths | integer <int32> Mention if there is a minimum limit on the period of stay, for eg, the tenant has to stay at least 2 months. |
| maximumStayMonths | MaximumStayMonths <int32> Mention if there is a maximum limit on the period of stay, for eg, the tenant can not rent for a longer period than 12 months. |
| moveInWindow | integer <int32> Setting this field to greater than 0 creates a time window in which in the listing is bookable. If the first day available is |
| currentOccupancy | integer <int32> The number of people currently living in the house. This is only applicable to properties that are shared apartments or shared rooms. |
| rules | object (Rules) |
| minAge | integer <int32> If there is a minimum age applicable to the tenant, i.e., they have to be at least 18 years old. |
| maxAge | integer <int32> If there is a maximum age applicable to the tenant, i.e., they have to be no older than 35 years. |
| preferredGender | string (Gender) Enum: "male" "female" "other" This will be shown as |
| alias | string |
| externalReference | string |
| extraData | string A JSON field with extra information important for the listing which doesn't fit in other fields. Make sure to escape the quotes! |
| registrationNumber | string Optional registration number for the unit, used for legal or regulatory purposes. |
| facilities | object Specify the facilities provided in the listing. |
| calendarOperations | Array of objects (CalendarOperation) |
| images | Array of objects (ImageRequest) |
| costs | Array of objects (Cost) |
Add Listing Response
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Conflict with the current state of the target resource.
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "price": 56700,
- "pricingType": 2,
- "monthlyPrices": {
- "1": 120000,
- "2": 80000,
- "3": 90000,
- "4": 100000,
- "5": 90000,
- "6": 85000,
- "7": 89000,
- "8": 89000,
- "9": 70000,
- "10": 60000,
- "11": 60000,
- "12": 75000
}, - "currencyCode": "EUR",
- "address": {
- "housenumber": "81A",
- "street": "Oostplein",
- "city": "Rotterdam",
- "state": "South-Holland",
- "postalCode": "3071VN",
- "neighborhood": "Oostplein Metro Station",
- "countryCode": "NL"
}, - "type": 1,
- "kind": 1,
- "description": "Centrally located apartment, very close to public transport and supermarkets. It comes with a fully equipped kitchen with all cooking, cleaning appliances. Registration is possible. There is a parking spot directly in front of the building.",
- "minimumStayMonths": 26,
- "maximumStayMonths": 36,
- "moveInWindow": 30,
- "currentOccupancy": 2,
- "rules": {
- "pets": "no",
- "cleaningCommonRoomsIncluded": true,
- "cleaningPrivateRoomIncluded": true,
- "playMusic": "no",
- "smoking": "no",
- "couple": true
}, - "minAge": 23,
- "maxAge": 45,
- "preferredGender": "male",
- "alias": "the-left-room",
- "externalReference": "any-identifier",
- "extraData": "{\"onBoardingLink\":\"https://termsandconditions.com/uniqueId\"}",
- "registrationNumber": "REG123456",
- "facilities": {
- "allergyFriendly": true,
- "housematesGender": "boys",
- "registrationPossible": true,
- "tenantStatus": "working",
- "freePlaces": 3,
- "bedrooms": 3,
- "bedroomFurnished": true,
- "bedroomSize": 60,
- "bedroomLock": true,
- "balconyTerrace": "no",
- "basement": "no",
- "bathroom": "no",
- "garden": "no",
- "kitchen": "no",
- "livingRoom": "no",
- "parking": "no",
- "toilet": "no",
- "totalSize": 80,
- "wheelchairAccessible": true,
- "airConditioning": true,
- "bed": true,
- "closet": true,
- "desk": true,
- "dishwasher": true,
- "dryer": true,
- "internet": true,
- "roomFurniture": true,
- "tv": true,
- "washingMachine": true,
- "wifi": true,
- "flooring": "laminate",
- "heating": "na",
- "kitchenware": "no"
}, - "calendarOperations": [
- {
- "type": 1,
- "dateFrom": "2024-05-29",
- "dateTo": "2025-07-29"
}
], - "costs": [
- {
- "type": "security-deposit",
- "value": "8000",
- "payableAt": "move-in",
- "payableBy": "tenant",
- "refundable": true,
- "estimated": false,
- "mandatory": true
}
]
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0"
}
}Get all listings of the particular advertiser.
GetListingsResponse
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": [
- {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0",
- "price": 56700,
- "pricingType": 2,
- "monthlyPrices": {
- "1": 120000,
- "2": 80000,
- "3": 90000,
- "4": 100000,
- "5": 90000,
- "6": 85000,
- "7": 89000,
- "8": 89000,
- "9": 70000,
- "10": 60000,
- "11": 60000,
- "12": 75000
}, - "address": {
- "housenumber": "81A",
- "street": "Oostplein",
- "city": "Rotterdam",
- "state": "South-Holland",
- "postalCode": "3071VN",
- "neighborhood": "Oostplein Metro Station",
- "countryCode": "NL"
}, - "type": 1,
- "kind": 1,
- "currencyCode": "EUR",
- "description": "string",
- "minimumStayMonths": 36,
- "maximumStayMonths": 12,
- "moveInWindow": 2,
- "currentOccupancy": 3,
- "rules": {
- "pets": "no",
- "cleaningCommonRoomsIncluded": true,
- "cleaningPrivateRoomIncluded": true,
- "playMusic": "no",
- "smoking": "no",
- "couple": true
}, - "minAge": 23,
- "maxAge": 45,
- "preferredGender": "male",
- "facilities": {
- "allergyFriendly": true,
- "housematesGender": "boys",
- "registrationPossible": true,
- "tenantStatus": "working",
- "freePlaces": 3,
- "bedrooms": 3,
- "bedroomFurnished": true,
- "bedroomSize": 60,
- "bedroomLock": true,
- "balconyTerrace": "no",
- "basement": "no",
- "bathroom": "no",
- "garden": "no",
- "kitchen": "no",
- "livingRoom": "no",
- "parking": "no",
- "toilet": "no",
- "totalSize": 80,
- "wheelchairAccessible": true,
- "airConditioning": true,
- "bed": true,
- "closet": true,
- "desk": true,
- "dishwasher": true,
- "dryer": true,
- "internet": true,
- "roomFurniture": true,
- "tv": true,
- "washingMachine": true,
- "wifi": true,
- "flooring": "laminate",
- "heating": "na",
- "kitchenware": "no"
}, - "extraData": "{\"extraField\": \"https://termsandconditions.com/uniqueId\"}",
- "alias": "the-left-room",
- "externalReference": "partner-identifier",
- "registrationNumber": "REG123456",
- "state": "published",
- "calendarOperations": [
- {
- "type": 1,
- "dateFrom": "2024-05-29",
- "dateTo": "2025-07-29"
}
], - "images": [
- {
- "id": "string",
- "state": "ready",
- "publicUrl": "string",
- "url": "string",
- "rotation": 0
}
], - "costs": [
- {
- "type": "security-deposit",
- "value": "8000",
- "payableAt": "move-in",
- "payableBy": "tenant",
- "refundable": true,
- "estimated": false,
- "mandatory": true
}
]
}
], - "pagination": {
- "nextCursor": "3450",
- "count": 20
}
}Update details of specific listing.
| listing_id required | integer <int64> The ID of the listing to update |
| price | integer <int32> Price of the appartment in lowest denomination in given currency. e.g: Cents if currency is Euro |
| pricingType | integer (PricingType) Enum: "Flat = 1" "Monthly = 2" |
| monthlyPrices | object (MonthlyPrices) Listing price is set on a monthly basis. They keys denote the months, 1 to 12, 1 represents January, 2 for February and son on. This field is required when |
| address | object (Address) The address of the listing by the house number, street, city, state, postal code and the country code. |
| type | integer (Type) Enum: "House = 1" "Building = 2" "Apartment = 3" |
| kind | integer (Kind) Enum: "EntirePlace = 1" "PrivateRoom = 2" "SharedRoom = 3" |
| description | string |
| minimumStayMonths | integer <int32> Mention if there is a minimum limit on the period of stay, for eg, the tenant has to stay at least 2 months. |
| maximumStayMonths | MaximumStayMonths <int32> Mention if there is a maximum limit on the period of stay, for eg, the tenant can not rent for a longer period than 12 months. |
| moveInWindow | integer <int32> Setting this field to greater than 0 creates a time window in which in the listing is bookable. If the first day available is |
| currentOccupancy | integer <int32> The number of people currently living in the house. This is only applicable to properties that are shared apartments or shared rooms. |
| rules | object (Rules) |
| minAge | integer <int32> If there is a minimum age applicable to the tenant, i.e., they have to be at least 18 years old. |
| maxAge | integer <int32> If there is a maximum age applicable to the tenant, i.e., they have to be no older than 35 years. |
| preferredGender | string (Gender) Enum: "male" "female" "other" This will be shown as |
| alias | string |
| externalReference | string |
| extraData | string A JSON field with extra information important for the listing which doesn't fit in other fields. Make sure to escape the quotes! |
| registrationNumber | string Optional registration number for the unit, used for legal or regulatory purposes. |
| facilities | object (Facilities) |
Update Listing Response
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
The specified resource was not found
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "price": 56700,
- "pricingType": 2,
- "monthlyPrices": {
- "1": 120000,
- "2": 80000,
- "3": 90000,
- "4": 100000,
- "5": 90000,
- "6": 85000,
- "7": 89000,
- "8": 89000,
- "9": 70000,
- "10": 60000,
- "11": 60000,
- "12": 75000
}, - "address": {
- "housenumber": "81A",
- "street": "Oostplein",
- "city": "Rotterdam",
- "state": "South-Holland",
- "postalCode": "3071VN",
- "neighborhood": "Oostplein Metro Station",
- "countryCode": "NL"
}, - "type": 1,
- "kind": 1,
- "description": "string",
- "minimumStayMonths": 26,
- "maximumStayMonths": 12,
- "moveInWindow": 30,
- "currentOccupancy": 2,
- "rules": {
- "pets": "no",
- "cleaningCommonRoomsIncluded": true,
- "cleaningPrivateRoomIncluded": true,
- "playMusic": "no",
- "smoking": "no",
- "couple": true
}, - "minAge": 23,
- "maxAge": 45,
- "preferredGender": "male",
- "alias": "the-left-room",
- "externalReference": "any-identifier",
- "extraData": "{\"onBoardingLink\":\"https://termsandconditions.com/uniqueId\"}",
- "registrationNumber": "REG123456",
- "facilities": {
- "allergyFriendly": true,
- "housematesGender": "boys",
- "registrationPossible": true,
- "tenantStatus": "working",
- "freePlaces": 3,
- "bedrooms": 3,
- "bedroomFurnished": true,
- "bedroomSize": 60,
- "bedroomLock": true,
- "balconyTerrace": "no",
- "basement": "no",
- "bathroom": "no",
- "garden": "no",
- "kitchen": "no",
- "livingRoom": "no",
- "parking": "no",
- "toilet": "no",
- "totalSize": 80,
- "wheelchairAccessible": true,
- "airConditioning": true,
- "bed": true,
- "closet": true,
- "desk": true,
- "dishwasher": true,
- "dryer": true,
- "internet": true,
- "roomFurniture": true,
- "tv": true,
- "washingMachine": true,
- "wifi": true,
- "flooring": "laminate",
- "heating": "na",
- "kitchenware": "no"
}
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0",
- "price": 56700,
- "pricingType": 2,
- "monthlyPrices": {
- "1": 120000,
- "2": 80000,
- "3": 90000,
- "4": 100000,
- "5": 90000,
- "6": 85000,
- "7": 89000,
- "8": 89000,
- "9": 70000,
- "10": 60000,
- "11": 60000,
- "12": 75000
}, - "address": {
- "housenumber": "81A",
- "street": "Oostplein",
- "city": "Rotterdam",
- "state": "South-Holland",
- "postalCode": "3071VN",
- "neighborhood": "Oostplein Metro Station",
- "countryCode": "NL"
}, - "type": 1,
- "kind": 1,
- "currencyCode": "EUR",
- "description": "string",
- "minimumStayMonths": 36,
- "maximumStayMonths": 12,
- "moveInWindow": 2,
- "currentOccupancy": 3,
- "rules": {
- "pets": "no",
- "cleaningCommonRoomsIncluded": true,
- "cleaningPrivateRoomIncluded": true,
- "playMusic": "no",
- "smoking": "no",
- "couple": true
}, - "minAge": 23,
- "maxAge": 45,
- "preferredGender": "male",
- "facilities": {
- "allergyFriendly": true,
- "housematesGender": "boys",
- "registrationPossible": true,
- "tenantStatus": "working",
- "freePlaces": 3,
- "bedrooms": 3,
- "bedroomFurnished": true,
- "bedroomSize": 60,
- "bedroomLock": true,
- "balconyTerrace": "no",
- "basement": "no",
- "bathroom": "no",
- "garden": "no",
- "kitchen": "no",
- "livingRoom": "no",
- "parking": "no",
- "toilet": "no",
- "totalSize": 80,
- "wheelchairAccessible": true,
- "airConditioning": true,
- "bed": true,
- "closet": true,
- "desk": true,
- "dishwasher": true,
- "dryer": true,
- "internet": true,
- "roomFurniture": true,
- "tv": true,
- "washingMachine": true,
- "wifi": true,
- "flooring": "laminate",
- "heating": "na",
- "kitchenware": "no"
}, - "extraData": "{\"extraField\": \"https://termsandconditions.com/uniqueId\"}",
- "alias": "the-left-room",
- "externalReference": "partner-identifier",
- "registrationNumber": "REG123456",
- "state": "published",
- "calendarOperations": [
- {
- "type": 1,
- "dateFrom": "2024-05-29",
- "dateTo": "2025-07-29"
}
], - "images": [
- {
- "id": "string",
- "state": "ready",
- "publicUrl": "string",
- "url": "string",
- "rotation": 0
}
], - "costs": [
- {
- "type": "security-deposit",
- "value": "8000",
- "payableAt": "move-in",
- "payableBy": "tenant",
- "refundable": true,
- "estimated": false,
- "mandatory": true
}
]
}
}Delete an active listing.
| listing_id required | string The ID of the listing to delete |
Delete Listing Response
Authorization error. API key is missing or invalid.
Insufficient Permission
The specified resource was not found
Conflict with the current state of the target resource.
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0"
}
}Hide an active listing from the HousingAnywhere platform without deleting it.
| listing_id required | string The ID of the listing to hide |
Listing hidden successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Conflict with the current state of the target resource.
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0"
}
}Show a hidden listing on the HousingAnywhere platform.
| listing_id required | string The ID of the listing to show |
Listing shown successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Conflict with the current state of the target resource.
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0"
}
}Get list of all the images of the specific listing.
Success responses of all the images of the listing
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "images": [
- {
- "id": "string",
- "state": "ready",
- "publicUrl": "string",
- "url": "string",
- "rotation": 0
}
]
}
}Add images to the specific listing. Only 100 images at the time can be uploaded. To upload more than 100 images, multiple calls should be made.
| images required | Array of objects (ImageRequest) |
Images submitted to upload.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "msg": "string",
- "images": [
- {
- "id": "string",
- "state": "ready",
- "publicUrl": "string",
- "url": "string",
- "rotation": 0
}
]
}
}Edit listing images rotation and ordering.
| images | Array of objects (ImageUpdateRequest) |
| order | Array of strings |
Images updated successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "images": [
- {
- "id": "Ar8ekXJWSOGGWbTefL65aA",
- "rotateAbs": 90,
- "rotateIncr": 30
}
], - "order": [
- "RD-GLmyrSFGC0wtv01cHfQ"
]
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "images": [
- {
- "id": "string",
- "state": "ready",
- "publicUrl": "string",
- "url": "string",
- "rotation": 0
}
]
}
}Delete listing images.
| ids | Array of strings |
| all | bool |
Images deleted successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "ids": [
- "RD-GLmyrSFGC0wtv01cHfQ"
], - "all": false
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}
}Get list of all the calendar operations of the specific listing.
Success responses of all the calendar operations of the listing
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "calendarOperations": [
- {
- "type": 1,
- "dateFrom": "2024-05-29",
- "dateTo": "2025-07-29"
}
]
}
}Edit calendar operations of the specific listing.
| calendarOperations | Array of objects (CalendarOperation) |
Listing calendar operations updated successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "calendarOperations": [
- {
- "type": 1,
- "dateFrom": "2024-05-29",
- "dateTo": "2025-07-29"
}
]
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}
}Get a list of all the costs associated with the listing.
Success responses for costs of the listing
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": {
- "costs": [
- {
- "type": "security-deposit",
- "value": "8000",
- "payableAt": "move-in",
- "payableBy": "tenant",
- "refundable": true,
- "estimated": false,
- "mandatory": true
}
]
}
}Edit costs associated with the listing.
| costs | Array of objects (Cost) |
Listing costs updated successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "costs": [
- {
- "type": "security-deposit",
- "value": "8000",
- "payableAt": "move-in",
- "payableBy": "tenant",
- "refundable": true,
- "estimated": false,
- "mandatory": true
}
]
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}
}Shows all possible cost configurations
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Conflict with the current state of the target resource.
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}Webhooks notify your application any time an event (e.g. Booking) happens on your account.
This endpoint can be used to register a webhook. Currently we provide only one type of webhook that is triggered when a booking is successfully paid for a listing. Note: You can configure only one webhook per type. Once a webhook is successfully registered, we call the endpoint with the body constructed from the template registered (see Webhook templating section).
We provide a templating engine that allows you to get the information you need about your bookings, templating capabilities are available through the two elements; url and body.
Both can use the same set of variables to provide information about the booking that took place.
For example, you can declare the following template in the body element when creating a webhook callback.
<booking start='{{$.BookingStartDate}}' end='{{$.BookingEndDate}}'>
<tenant>
<email>{{$.TenantEmail}}</email>
<name>{{$.TenantFirstName}} {{$.TenantLastName}}</name>
</tenant>
</booking>
Or you can use the url element like:
https://your-server.com/send/callback/here?bookingStart={{$.BookingStartDate}}&bookingEnd={{$.BookingEndDate}}&tenantEmail={{$.TenantEmail}}
The following variables are available for templating:
| url required | string (WebhookURL) The URL for the webhook callback, http and https are both allowed. |
| method required | int32 (WebhooksMethods) Enum: "GET = 1" "POST = 2" The HTTP method to use: GET or POST. |
| contentType required | int32 (WebhooksContentTypes) Enum: "text/plain = 1" "application/x-www-form-urlencoded = 2" "application/json = 3" |
| type required | int32 (WebhookType) Value: "AFTER_BOOKING_PAID = 0" The webhook you want to add a callback for. |
| body | string (WebhookBody) The body of the webhook callback, used only if |
| reportEmail required | string (WebhookReportEmail) This email address will receive a notification if a problem occurs in the webhook callback. |
| auth | object (WebhooksAuth) Credentials for HTTP Basic Authentication if enabled on the callback URL. |
Webhook added successfully.
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Conflict with the current state of the target resource.
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "method": 2,
- "contentType": 3,
- "type": 0,
- "body": "{ \"tenant_email\": \"`{{$.TenantEmail}}`\", \"booking_price\": \"`{{$.BookingPrice}}`\", \"booking_start_date\": \"`{{$.BookingStartDate}}`\", \"booking_end_date\": \"`{{$.BookingEndDate}}`\" }",
- "reportEmail": "support@your-server.com",
- "auth": {
- "user": "username",
- "password": "myP4$$"
}
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": [
- {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0",
- "active": true,
- "method": 2,
- "contentType": 3,
- "type": 0,
- "auth": {
- "user": "username",
- "password": "myP4$$"
}, - "reportEmail": "support@your-server.com"
}
]
}Get a list of all configuered webhooks
List webhooks
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}, - "data": [
- {
- "id": "1ErM5R2eZvKYlo2CoHFHzSQ0",
- "active": true,
- "method": 2,
- "contentType": 3,
- "type": 0,
- "auth": {
- "user": "username",
- "password": "myP4$$"
}, - "reportEmail": "support@your-server.com"
}
]
}Update details of a specific webhook.
| webhook_id required | string The ID of the webhook to update |
| url | string (WebhookURL) The URL for the webhook callback, http and https are both allowed. |
| method | int32 (WebhooksMethods) Enum: "GET = 1" "POST = 2" The HTTP method to use: GET or POST. |
| contentType | int32 (WebhooksContentTypes) Enum: "text/plain = 1" "application/x-www-form-urlencoded = 2" "application/json = 3" |
| type | int32 (WebhookType) Value: "AFTER_BOOKING_PAID = 0" The webhook you want to add a callback for. |
| body | string (WebhookBody) The body of the webhook callback, used only if |
| reportEmail | string (WebhookReportEmail) This email address will receive a notification if a problem occurs in the webhook callback. |
| auth | object (WebhooksAuth) Credentials for HTTP Basic Authentication if enabled on the callback URL. |
Patched successfully
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{- "method": 2,
- "contentType": 3,
- "type": 0,
- "body": "{ \"tenant_email\": \"`{{$.TenantEmail}}`\", \"booking_price\": \"`{{$.BookingPrice}}`\", \"booking_start_date\": \"`{{$.BookingStartDate}}`\", \"booking_end_date\": \"`{{$.BookingEndDate}}`\" }",
- "reportEmail": "support@your-server.com",
- "auth": {
- "user": "username",
- "password": "myP4$$"
}
}{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}
}Delete the spcified webhook
| webhook_id required | string The ID of the webhook to delete |
Deleted successfully
Bad request or Malformed JSON
Authorization error. API key is missing or invalid.
Insufficient Permission
Wrong payload
Rate limit exceeded. Retry after a short delay.
Something went wrong on server side
Production Server. Use it for real data
Test server. Use it for test data
{ }{- "meta": {
- "status": "2xx",
- "errors": [
- {
- "error": "string"
}
]
}
}