Kasify
ENES
  • Documentation
  • Documentación
  • Developers
  • API Reference
Information
AccessCodes
    Create digital access codes for a bookingpostRevoke a digital access codedelete
Account
    Get the user's accountgetUpdate the user's accountput
Auth
    Register the authenticated userpost
Bookings
    Get the current booking for a propertygetList bookings for a propertygetCreate a booking for a propertypostList bookings across all properties the caller can accessgetGet a booking by idgetUpdate a bookingpatch
Calendar
    List calendar events for a propertygetList upcoming calendar events across accessible propertiesget
Checkin
    Get the guest check-in snapshot for a bookinggetRegister a guest on a bookingpost
Geo
    Search countriesgetSearch provincesgetSearch citiesget
Guests
    List guests registered under the caller's accountget
Integrations
    List all integrations configured for the accountgetList integrations of a specific typegetCreate an integration of a specific typepostUpdate an integrationputDelete an integrationdeleteList Nuki smart locks reachable through an integrationgetList Unifi doors reachable through an integrationget
Properties
    List properties accessible to the callergetCreate a propertypostGet a property by idgetUpdate a propertyputDelete a propertydeleteUpload a cover image for a propertypostRemove the cover image for a propertydelete
PropertyMembers
    List invitations for a propertygetCreate a crew invitation for a propertypostList crew members for a propertygetRemove a crew member from a propertydeleteUpdate a crew member's access levelpatchRevoke an invitationdeleteAccept a crew invitationpost
SmartLocks
    List smart locks for a property with live statusgetAdd a smart lock to a propertypostRemove a smart lock from a propertydelete
Tasks
    List tasksgetCreate a taskpostGet a task by idgetDelete a taskdeleteUpdate a taskpatchStart a taskpostComplete a taskpostList tasks for a propertygetGet a task by public token (no auth)get
Timeline
    Upcoming timeline grouped by daygetPaginated activity feedget
Users
    List every user (admin only)get
Schemas
Kasify API
Kasify API

Properties


List properties accessible to the caller

GET
/properties

List properties accessible to the caller › query Parameters

page
​string

Zero-based page index (default 0)

size
​string

Page size (max 100)

List properties accessible to the caller › Responses

Paginated properties the caller owns or has crew access to

PropertiesResponse
​Property[] · required
page
​integer | null
size
​integer | null
total
​integer | null
GET/properties
curl --request GET \ --url /properties
shell
Example Responses
{ "properties": [ { "id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "country": "country", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0, "default_cleaner": { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" }, "cover_image_url": "cover_image_url", "role": "role", "calendars": [ { "channel": "channel", "url": "url", "syncIntervalMinutes": 0, "lastSyncAt": "2024-08-25", "lastError": "lastError" } ], "smart_locks": [ { "id": "00000000-0000-0000-0000-000000000000", "vendor": "vendor", "name": "name" } ], "team": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" } ] } ], "page": 0, "size": 0, "total": 0 }
json
application/json

Create a property

POST
/properties

Create a property › Request Body

NewPropertyRequest
name
​string · required
address
​string · required
city
​string · required
zip_code
​string · required
airbnb_ical_url
​string | null
default_cleaner_id
​string | null · uuid
ses_establishment_code
​string | null
ses_establishment_type
​string | null
has_internet
​boolean | null
rooms_count
​integer | null

Create a property › Responses

The created property

Property
name
​string · required
id
​string | null · uuid
account_id
​string | null · uuid
address
​string | null
city
​string | null
zip_code
​string | null
country
​string | null
ses_establishment_code
​string | null
ses_establishment_type
​string | null
has_internet
​boolean | null
rooms_count
​integer | null
​
cover_image_url
​string | null
role
​string | null
​Calendar[]
​SmartLockInfo[]
​PropertyMember[]
POST/properties
curl --request POST \ --url /properties \ --header 'Content-Type: application/json' \ --data ' { "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "airbnb_ical_url": "airbnb_ical_url", "default_cleaner_id": "00000000-0000-0000-0000-000000000000", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0 } '
shell
Example Request Body
{ "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "airbnb_ical_url": "airbnb_ical_url", "default_cleaner_id": "00000000-0000-0000-0000-000000000000", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0 }
json
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "country": "country", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0, "default_cleaner": { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" }, "cover_image_url": "cover_image_url", "role": "role", "calendars": [ { "channel": "channel", "url": "url", "syncIntervalMinutes": 0, "lastSyncAt": "2024-08-25", "lastError": "lastError" } ], "smart_locks": [ { "id": "00000000-0000-0000-0000-000000000000", "vendor": "vendor", "name": "name" } ], "team": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" } ] }
json
application/json

Get a property by id

GET
/properties/{id}

Get a property by id › path Parameters

id
​string · required

Property id

Get a property by id › Responses

The property with its calendars, smart locks, team, and default cleaner. Sensitive fields are redacted for non-owner roles.

Property
name
​string · required
id
​string | null · uuid
account_id
​string | null · uuid
address
​string | null
city
​string | null
zip_code
​string | null
country
​string | null
ses_establishment_code
​string | null
ses_establishment_type
​string | null
has_internet
​boolean | null
rooms_count
​integer | null
​
cover_image_url
​string | null
role
​string | null
​Calendar[]
​SmartLockInfo[]
​PropertyMember[]
GET/properties/{id}
curl --request GET \ --url /properties/:id
shell
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "country": "country", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0, "default_cleaner": { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" }, "cover_image_url": "cover_image_url", "role": "role", "calendars": [ { "channel": "channel", "url": "url", "syncIntervalMinutes": 0, "lastSyncAt": "2024-08-25", "lastError": "lastError" } ], "smart_locks": [ { "id": "00000000-0000-0000-0000-000000000000", "vendor": "vendor", "name": "name" } ], "team": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" } ] }
json
application/json

Update a property

PUT
/properties/{id}

Replaces mutable property fields and re-syncs the Airbnb iCal integration based on the supplied URL (set to null to remove the integration).

Update a property › path Parameters

id
​string · required

Property id

Update a property › Request Body

NewPropertyRequest
name
​string · required
address
​string · required
city
​string · required
zip_code
​string · required
airbnb_ical_url
​string | null
default_cleaner_id
​string | null · uuid
ses_establishment_code
​string | null
ses_establishment_type
​string | null
has_internet
​boolean | null
rooms_count
​integer | null

Update a property › Responses

The updated property

Property
name
​string · required
id
​string | null · uuid
account_id
​string | null · uuid
address
​string | null
city
​string | null
zip_code
​string | null
country
​string | null
ses_establishment_code
​string | null
ses_establishment_type
​string | null
has_internet
​boolean | null
rooms_count
​integer | null
​
cover_image_url
​string | null
role
​string | null
​Calendar[]
​SmartLockInfo[]
​PropertyMember[]
PUT/properties/{id}
curl --request PUT \ --url /properties/:id \ --header 'Content-Type: application/json' \ --data ' { "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "airbnb_ical_url": "airbnb_ical_url", "default_cleaner_id": "00000000-0000-0000-0000-000000000000", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0 } '
shell
Example Request Body
{ "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "airbnb_ical_url": "airbnb_ical_url", "default_cleaner_id": "00000000-0000-0000-0000-000000000000", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0 }
json
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "name": "name", "address": "address", "city": "city", "zip_code": "zip_code", "country": "country", "ses_establishment_code": "ses_establishment_code", "ses_establishment_type": "ses_establishment_type", "has_internet": true, "rooms_count": 0, "default_cleaner": { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" }, "cover_image_url": "cover_image_url", "role": "role", "calendars": [ { "channel": "channel", "url": "url", "syncIntervalMinutes": 0, "lastSyncAt": "2024-08-25", "lastError": "lastError" } ], "smart_locks": [ { "id": "00000000-0000-0000-0000-000000000000", "vendor": "vendor", "name": "name" } ], "team": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "name", "last_name": "last_name", "email": "email", "access_level": "access_level", "service": "service" } ] }
json
application/json

Delete a property

DELETE
/properties/{id}

Delete a property › path Parameters

id
​string · required

Property id

Delete a property › Responses

Property deleted

No data returned
DELETE/properties/{id}
curl --request DELETE \ --url /properties/:id
shell
Example Responses
No example specified for this content type

Upload a cover image for a property

POST
/properties/{id}/cover-image

Multipart upload. Expects a single file part containing the image bytes. Only owners and managers may update the cover image.

Upload a cover image for a property › path Parameters

id
​string · required

Property id

Upload a cover image for a property › Responses

The stored file metadata

FileResponse
id
​string · uuid · required
url
​string · required
original_filename
​string · required
content_type
​string · required
size_bytes
​integer · required
POST/properties/{id}/cover-image
curl --request POST \ --url /properties/:id/cover-image
shell
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "url": "url", "original_filename": "original_filename", "content_type": "content_type", "size_bytes": 0 }
json
application/json

Remove the cover image for a property

DELETE
/properties/{id}/cover-image

Remove the cover image for a property › path Parameters

id
​string · required

Property id

Remove the cover image for a property › Responses

Cover image removed

No data returned
DELETE/properties/{id}/cover-image
curl --request DELETE \ --url /properties/:id/cover-image
shell
Example Responses
No example specified for this content type

IntegrationsPropertyMembers