NAV
shell

Introduction

Welcome to the Safely API! Our goal is to provide a simple to use RESTful API to provide access to account data. We support reading and writing data related to your account.

Guidelines

Default Base URL

The base URL for the Safely API by environment is as follows

Environment Base URL
Production https://api.safely.com/api/v1/

Rate Limit

The Safely API allows 300 API calls per minute per API key. Should you need a higher rate limit, please contact us for an increase.

Authentication

Bearer Authentication

$ curl https://api.safely.com/v1/reservations/ 
  -H "Authorization: Bearer API_KEY"

Make sure to replace API_KEY with your API key.

Safely account holders who want to access the API can do so using their API key which can be obtained on the Account page in the portal.

The API Key should be included in each request as an Authentication Header. THe API uses Bearer Authentication.

Pagination

Paginated Query

$ curl https://api.safely.com/v1/properties/?page=1&limit=50
  -H "Authorization: Bearer API_KEY"

Requests that return multiple items will be paginated to 20 items by default. You can specify additional pages with the ?page parameter. You can also set a custom page size up to 100 with the ?limit parameter.

Note: Page numbering is 1-based and not including the ?page parameter will return the first page.

Properties

Property Object

{
  "id": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "referenceId": "PROP-0001",
  "name": "Beach Home",
  "description": "Beautiful vacation home on the beach.",
  "accomodates": 6,
  "accomodatesAdults": 6,
  "accomodatesChildren": 0,
  "accomodatesInfant": 0,
  "bathrooms": 2.5,
  "bedrooms": 3,
  "propertyType": "SINGLE_FAMILY_HOME",
  "status": "ACTIVE",
  "streetLine1": "123 Beach Front Rd.",
  "streetLine2": null,
  "city": "Beach City",
  "state": "Florida",
  "postalCode": "32100",
  "countryCode": "US",
  "photos": [
    {
      "id": "8e325e75-4864-41dc-94d9-32d5c80b9599",
      "url": "https://www.example.com/prop-0001/image.png",
      "caption": "The beach house",
      "primary": true
    }
  ],
  "updateDate": "2020-01-01T12:45:12Z",
  "createDate": "2019-08-12T19:27:52Z"
}

A Property represents a residence that is rented. Property data is required before a Reservation can be accepted and covered for a stay at that location. Property data is required in order to create Reservations and to provide a Damage Policy for the time period covered by the Reservation.

List Properties

Request

$ curl https://api.safely.com/v1/properties/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "properties": [
      {
        "id": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
        "referenceId": "PROP-0001",
        "name": "Beach Home",
        "description": "Beautiful vacation home on the beach.",
        "accomodates": 6,
        "accomodatesAdults": 6,
        "accomodatesChildren": 0,
        "accomodatesInfant": 0,
        "bathrooms": 2.5,
        "bedrooms": 3,
        "propertyType": "SINGLE_FAMILY_HOME",
        "streetLine1": "123 Beach Front Rd.",
        "streetLine2": null,
        "city": "Beach City",
        "state": "Florida",
        "postalCode": "32100",
        "countryCode": "US",
        "updateDate": "2020-01-01T12:45:12Z",
        "createDate": "2019-08-12T19:27:52Z",
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da"
          },
          "properties": {
            "href": "https://api.safely.com/v1/properties?page=1&limit=20"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties?page=1&limit=20"
    }
  }
}

Get all Properties in an account.

HTTP Request

GET https://api.safely.com/v1/properties/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Property

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/
  -H "Authorization: API_KEY"

Response

{
  "id": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "referenceId": "PROP-0001",
  "name": "Beach Home",
  "description": "Beautiful vacation home on the beach.",
  "accomodates": 6,
  "accomodatesAdults": 6,
  "accomodatesChildren": 0,
  "accomodatesInfant": 0,
  "bathrooms": 2.5,
  "bedrooms": 3,
  "propertyType": "SINGLE_FAMILY_HOME",
  "streetLine1": "123 Beach Front Rd.",
  "streetLine2": null,
  "city": "Beach City",
  "state": "Florida",
  "postalCode": "32100",
  "countryCode": "US",
  "updateDate": "2020-01-01T12:45:12Z",
  "createDate": "2019-08-12T19:27:52Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da"
    },
    "properties": {
      "href": "https://api.safely.com/v1/properties?page=1&limit=20"
    }
  }
}

Get a single Property in the account.

HTTP Request

GET https://api/safely.ai/v1/properties/{id}/

Parameters

Name Type In Description
id string path The id of the property

Create Property

Request

$ curl https://api.safely.com/v1/properties/
  -H "Authorization: API_KEY" -X POST
  -d '{
        "referenceId": "PROP-0001",
        "name": "Beach Home",
        "description": "Beautiful vacation home on the beach.",
        "accomodates": 6,
        "accomodatesAdults": 6,
        "accomodatesChildren": 0,
        "accomodatesInfant": 0,
        "bathrooms": 2.5,
        "bedrooms": 3,
        "propertyType": "SINGLE_FAMILY_HOME",
        "streetLine1": "123 Beach Front Rd.",
        "streetLine2": null,
        "city": "Beach City",
        "state": "Florida",
        "postalCode": "32100",
        "countryCode": "US"
      }'

Response

{
  "id": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "referenceId": "PROP-0001",
  "name": "Beach Home",
  "description": "Beautiful vacation home on the beach.",
  "accomodates": 6,
  "accomodatesAdults": 6,
  "accomodatesChildren": 0,
  "accomodatesInfant": 0,
  "bathrooms": 2.5,
  "bedrooms": 3,
  "propertyType": "SINGLE_FAMILY_HOME",
  "streetLine1": "123 Beach Front Rd.",
  "streetLine2": null,
  "city": "Beach City",
  "state": "Florida",
  "postalCode": "32100",
  "countryCode": "US",
  "updateDate": "2019-08-12T19:27:52Z",
  "createDate": "2019-08-12T19:27:52Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da"
    },
    "properties": {
      "href": "https://api.safely.com/v1/properties?page=1&limit=20"
    }
  }
}

Create a Property in the account.

HTTP Request

POST https://api/safely.ai/v1/properties/

Parameters

Name Type In Description
referenceId string body Required
name string body Required
description string body Optional
accomodates integer body Optional
accomodatesAdults integer body Optional
accomodatesChildren integer body Optional
accomodatesInfant integer body Optional
bathrooms number body Optional
bedrooms integer body Optional
propertyType string body Required
streetLine1 string body Required
streetLine2 string body Optional
city string body Required
state string body Required
postalCode string body Required
countryCode string body Required

Update Property

Request

$ curl http://api.safely.com/api/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/ 
  -H "Authorization: API_KEY" -X PUT
  -d '{
        "name": "Best Beach Home",
      }'

Response

{
  "id": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "referenceId": "PROP-0001",
  "name": "Best Beach Home",
  "description": "Beautiful vacation home on the beach.",
  "accomodates": 6,
  "accomodatesAdults": 6,
  "accomodatesChildren": 0,
  "accomodatesInfant": 0,
  "bathrooms": 2.5,
  "bedrooms": 3,
  "propertyType": "SINGLE_FAMILY_HOME",
  "streetLine1": "123 Beach Front Rd.",
  "streetLine2": null,
  "city": "Beach City",
  "state": "Florida",
  "postalCode": "32100",
  "countryCode": "US",
  "updateDate": "2020-01-01T12:45:12Z",
  "createDate": "2019-08-12T19:27:52Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da"
    },
    "properties": {
      "href": "https://api.safely.com/v1/properties?page=1&limit=20"
    }
  }
}

Update a Property in the account.

HTTP Request

PUT https://api.safely.com/v1/properties/{id}/

Parameters

Name Type In Description
id string path The id of the property
referenceId string body Optional
name string body Optional
description string body Optional
accomodates integer body Optional
accomodatesAdults integer body Optional
accomodatesChildren integer body Optional
accomodatesInfant integer body Optional
bathrooms number body Optional
bedrooms integer body Optional
propertyType string body Optional
streetLine1 string body Optional
streetLine2 string body Optional
city string body Optional
state string body Optional
postalCode string body Optional
countryCode string body Optional

Get Property Owner

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner
  -H "Authorization: API_KEY"

Response

{
  "id": "2e7c898e-ed19-412d-997d-2011c4c907bc",
  "firstName": "John",
  "lastName": "Doe",
  "streetline1": "123 Pine Cone Lane",
  "streetLine2": null,
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30318",
  "countryCode": "USA",
  "email": "john.doe@example.com",
  "phone": "555-555-0001",
  "updateDate": "2020-01-01T15:15:00Z",
  "createDate": "2020-01-01T14:12:19Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner"
    }
  }
}

Get the Owner for the property.

HTTP Request

GET https://api.safely.com/v1/properties/{id}/owner/

Parameters

Name Type In Description
id string path The id of the property

Create Property Owner

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner
  -H "Authorization: API_KEY" -X POST
  -b '{
        "firstName": "John",
        "lastName": "Doe",
        "streetLine1": "123 Pine Cone Lane",
        "streetLine2": null,
        "city": "Atlanta",
        "state": "GA",
        "postalCode": "30318",
        "countryCode": "USA",
        "email": "john.doe@example.com",
        "phone": "555-555-0004"
      }'

Response

{
  "id": "2e7c898e-ed19-412d-997d-2011c4c907bc",
  "firstName": "John",
  "lastName": "Doe",
  "streetLine1": "123 Pine Cone Lane",
  "streetLine2": null,
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30318",
  "countryCode": "USA",
  "email": "john.doe@example.com",
  "phone": "555-555-0004",
  "updateDate": "2020-01-01T15:15:00Z",
  "createDate": "2020-01-01T14:12:19Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner"
    }
  }
}

Create the Owner of the property.

HTTP Request

POST https://api.safely.com/v1/properties/{id}/owner/

Parameters

Name Type In Description
id string path The id of the property
firstName string body Required
lastName string body Required
streetLine1 string body Required
streetLine2 string body Optional
city string body Required
state string body Required
postalCode string body Required
countryCode string body Required
email string body Optional
phone string body Optional

Update Property Owner

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner
  -H "Authorization: API_KEY" -X PUT
  -b '{
        "phone": "555-555-0004"
      }'

Response

{
  "id": "2e7c898e-ed19-412d-997d-2011c4c907bc",
  "firstName": "John",
  "lastName": "Doe",
  "streetLine1": "123 Pine Cone Lane",
  "streetLine2": null,
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30318",
  "countryCode": "USA",
  "email": "john.doe@example.com",
  "phone": "555-555-0004",
  "updateDate": "2020-01-01T15:15:00Z",
  "createDate": "2020-01-01T14:12:19Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/owner"
    }
  }
}

Update the Owner of the property.

HTTP Request

PUT https://api.safely.com/v1/properties/{id}/owner/

Parameters

Name Type In Description
id string path The id of the property
firstName string body Optional
lastName string body Optional
streetLine1 string body Optional
streetLine2 string body Optional
city string body Optional
state string body Optional
postalCode string body Optional
countryCode string body Optional
email string body Optional
phone string body Optional

Get Property Photos

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "photos": [
      {
        "id": "8e325e75-4864-41dc-94d9-32d5c80b9599",
        "url": "https://www.example.com/prop-0001/image.png",
        "caption": "The beach house",
        "primary": true,
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/8e325e75-4864-41dc-94d9-32d5c80b9599"
          },
          "photos": {
            "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/?limit=20&page=1"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/?limit=20&page=1"
    }
  }
}

Get the photos for a property

HTTP Request

GET https://api.safely.com/v1/properties/{id}/photos/?limit=20&page=0

Parameters

Name Type In Description
id string path The id of the property
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Create Property Photos

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/
  -H "Authorization: API_KEY" -X POST
  -d '{
        "url": "https://www.example.com/prop-0001/image.png",
        "caption": "The beach house",
        "primary": true
      }'

Response

{
  "id": "8e325e75-4864-41dc-94d9-32d5c80b9599",
  "url": "https://www.example.com/prop-0001/image.png",
  "caption": "The beach house",
  "primary": true,
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/8e325e75-4864-41dc-94d9-32d5c80b9599"
    },
    "photos": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/?limit=20&page=1"
    }
  }
}

Create a photo for a property

HTTP Request

POST https://api.safely.com/v1/properties/{id}/photos/

Parameters

Name Type In Description
id string path The id of the property
url string body The url for the image
caption string body Optional
primary boolean body Optional

Update Property Photo

Request

$ curl https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/8e325e75-4864-41dc-94d9-32d5c80b9599/
  -H "Authorization: API_KEY" -X PUT
  -d '{
        "caption": "Updated caption",
        "primary": true
      }'

Response

{
  "id": "8e325e75-4864-41dc-94d9-32d5c80b9599",
  "url": "https://www.example.com/prop-0001/image.png",
  "caption": "Updated cpation",
  "primary": true,
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/8e325e75-4864-41dc-94d9-32d5c80b9599"
    },
    "photos": {
      "href": "https://api.safely.com/v1/properties/02f5b4d2-f3f3-4768-8d7e-f1c6f44164da/photos/?limit=20&page=1"
    }
  }
}

Update a photo for a property

HTTP Request

POST https://api.safely.com/v1/properties/{id}/photos/{photoId}/

Parameters

Name Type In Description
id string path The id of the property
photoId string path The id of the photo
url string body Optional
caption string body Optional
primary boolean body Optional

Get Property Types

Request

$ curl https://api.safely.com/v1/properties/types/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

[
  {
    "code" : "SINGLE_FAMILY_HOME",
    "name" : "Single Family Home"
  },
  {
    "code" : "TOWNHOUSE",
    "name" : "Townhouse"
  },
  {
    "code" : "OTHER",
    "name" : "Other"
  }
]

Get a list of valid Property Types

Http Request

GET https://api.safely.com/v1/properties/types/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Reservations

Reservation Object

{
  "id": "172551de-8159-4662-96ee-7d4070654e71",
  "referenceId": "RES-0001",
  "currency": "USD",
  "priceNightly": 175.50,
  "priceTotal": 526.5,
  "bookingDate": "2020-03-01",
  "arrivalDate": "2020-09-01",
  "departureDate": "2020-09-04",
  "adults": "4",
  "children": 2,
  "infants": 0,
  "pets": 0,
  "smoker": false,
  "status": "ACTIVE",
  "reservationType": "STANDARD_GUEST",
  "bookingChannelType": "PM_SITE",
  "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "propertyReferenceId": "PROP-0001",
  "guests": [
    {
      "firstName": "John",
      "middleName": null,
      "lastName": "Doe",
      "birthDate": "1980-07-04",
      "streetLine1": "123 Pine Lane",
      "streetLine2": "Apt #3",
      "city": "Atlanta",
      "state": "GA",
      "postalCode": "30327",
      "countryCode": "USD",
      "email": "john.doe@example.com",
      "phone": "555-555-0987"
    }
  ],
  "updateDate": "2020-03-02T20:11:04Z",
  "createDate": "2020-03-01T19:27:52Z"
}

The Reservation object represents a single reservation by a guest at a property. A reservation must include the Id of the Property it is associated with so that the Damage Policy and Verification Package for the Property can be associated with the Reservation. Either of the propertyId or propertyReferenceId of the Property may be provided. If both are provided they must be for the same Property.

List Reservations

Request

$ curl https://api.safely.com/v1/reservations/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "reservations": [
      {
        "id": "172551de-8159-4662-96ee-7d4070654e71",
        "referenceId": "RES-0001",
        "currency": "USD",
        "priceNightly": 175.50,
        "priceTotal": 526.5,
        "bookingDate": "2020-03-01",
        "arrivalDate": "2020-09-01",
        "departureDate": "2020-09-04",
        "adults": "4",
        "children": 2,
        "infants": 0,
        "pets": 0,
        "smoker": false,
        "status": "ACTIVE",
        "reservationType": "STANDARD_GUEST",
        "bookingChannelType": "PM_SITE",
        "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
        "propertyReferenceId": "PROP-0001",
        "guests": [
          {
            "firstName": "John",
            "middleName": null,
            "lastName": "Doe",
            "birthDate": "1980-07-04",
            "streetLine1": "123 Pine Lane",
            "streetLine2": "Apt #3",
            "city": "Atlanta",
            "state": "GA",
            "postalCode": "30327",
            "countryCode": "USD",
            "email": "john.doe@example.com",
            "phone": "555-555-0987"
          }
        ],
        "updateDate": "2020-03-02T20:11:04Z",
        "createDate": "2020-03-01T19:27:52Z",
        "_links": {
          "self": {
              "href": "https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71"
          },
          "reservations": {
              "href": "https://api.safely.com/v1/reservations?page=1&limit=20"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/reservations?page=1&limit=20"
    }
  }
}

Get all Reservations in an account

HTTP Request

GET https://api.safely.com/v1/reservations/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Reservation

Request

$ curl https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71/
  -H "Authorization: API_KEY"

Response

{
  "id": "172551de-8159-4662-96ee-7d4070654e71",
  "referenceId": "RES-0001",
  "currency": "USD",
  "priceNightly": 175.50,
  "priceTotal": 526.5,
  "bookingDate": "2020-03-01",
  "arrivalDate": "2020-09-01",
  "departureDate": "2020-09-04",
  "adults": "4",
  "children": 2,
  "infants": 0,
  "pets": 0,
  "smoker": false,
  "status": "ACTIVE",
  "reservationType": "STANDARD_GUEST",
  "bookingChannelType": "PM_SITE",
  "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "propertyReferenceId": "PROP-0001",
  "guests": [
    {
      "firstName": "John",
      "middleName": null,
      "lastName": "Doe",
      "birthDate": "1980-07-04",
      "streetLine1": "123 Pine Lane",
      "streetLine2": "Apt #3",
      "city": "Atlanta",
      "state": "GA",
      "postalCode": "30327",
      "countryCode": "USD",
      "email": "john.doe@example.com",
      "phone": "555-555-0987"
    }
  ],
  "updateDate": "2020-03-02T20:11:04Z",
  "createDate": "2020-03-01T19:27:52Z",
  "_links": {
    "self": {
        "href": "https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71"
    },
    "reservations": {
        "href": "https://api.safely.com/v1/reservations?page=1&limit=20"
    }
  }
}

Get a single Reservation in an account

HTTP Request

GET https://api.safely.com/v1/reservations/{id}/

Parameters

Name Type In Description
id string path The id of the reservations

Create Reservation

Request

$ curl https://api.safely.com/v1/reservations/
  -H "Authorization: API_KEY" -X POST
  -d '{
        "referenceId": "RES-0001",
        "currency": "USD",
        "priceNightly": 175.50,
        "priceTotal": 526.5,
        "bookingDate": "2020-03-01",
        "arrivalDate": "2020-09-01",
        "departureDate": "2020-09-04",
        "adults": "4",
        "children": 2,
        "infants": 0,
        "pets": 0,
        "smoker": false,
        "status": "ACTIVE",
        "reservationType": "STANDARD_GUEST",
        "bookingChannelType": "PM_SITE",
        "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
        "propertyReferenceId": "PROP-0001",
        "guests": [
          {
            "firstName": "John",
            "middleName": null,
            "lastName": "Doe",
            "birthDate": "1980-07-04",
            "streetLine1": "123 Pine Lane",
            "streetLine2": "Apt #3",
            "city": "Atlanta",
            "state": "GA",
            "postalCode": "30327",
            "countryCode": "USD",
            "email": "john.doe@example.com",
            "phone": "555-555-0987"
          }
        ]
      }'

Response

{
  "id": "172551de-8159-4662-96ee-7d4070654e71",
  "referenceId": "RES-0001",
  "currency": "USD",
  "priceNightly": 175.50,
  "priceTotal": 526.5,
  "bookingDate": "2020-03-01",
  "arrivalDate": "2020-09-01",
  "departureDate": "2020-09-04",
  "adults": "4",
  "children": 2,
  "infants": 0,
  "pets": 0,
  "smoker": false,
  "status": "ACTIVE",
  "reservationType": "STANDARD_GUEST",
  "bookingChannelType": "PM_SITE",
  "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "propertyReferenceId": "PROP-0001",
  "guests": [
    {
      "firstName": "John",
      "middleName": null,
      "lastName": "Doe",
      "birthDate": "1980-07-04",
      "streetLine1": "123 Pine Lane",
      "streetLine2": "Apt #3",
      "city": "Atlanta",
      "state": "GA",
      "postalCode": "30327",
      "countryCode": "USD",
      "email": "john.doe@example.com",
      "phone": "555-555-0987"
    }
  ],
  "updateDate": "2020-03-01T19:27:52Z",
  "createDate": "2020-03-01T19:27:52Z",
  "_links": {
    "self": {
        "href": "https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71"
    },
    "reservations": {
        "href": "https://api.safely.com/v1/reservations?page=1&limit=20"
    }
  }
}

Create a new reservation

HTTP Request

POST https://api.safely.com/v1/reservations/

Parameters

Name Type In Description
referenceId string body Required
currency string body Optional
priceNightly number body Optional
priceTotal number body Optional
bookingDate string body Required
arrivalDate string body Required
departureDate string body Required
adults integer body Optional
children integer body Optional
infants integer body Optional
pets integer body Optional
smoker boolean body Optional
status string body Required
reservationType integer body Required
bookingChannelType integer body Optional
propertyId integer body Required. The id of the property the reservation will be assigned to
guests guest body Required

Update Reservation

Request

$ curl https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71/
  -H "Authorization: API_KEY" -X PUT
  -b '{
        "arrivalDate": "2020-09-02",
        "departureDate": "2020-09-05"
      }'

Response

{
  "id": "172551de-8159-4662-96ee-7d4070654e71",
  "referenceId": "RES-0001",
  "currency": "USD",
  "priceNightly": 175.50,
  "priceTotal": 526.5,
  "bookingDate": "2020-03-01",
  "arrivalDate": "2020-09-02",
  "departureDate": "2020-09-05",
  "adults": "4",
  "children": 2,
  "infants": 0,
  "pets": 0,
  "smoker": false,
  "status": "ACTIVE",
  "reservationType": "STANDARD_GUEST",
  "bookingChannelType": "PM_SITE",
  "propertyId": "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "propertyReferenceId": "PROP-0001",
  "guests": [
    {
      "firstName": "John",
      "middleName": null,
      "lastName": "Doe",
      "birthDate": "1980-07-04",
      "streetLine1": "123 Pine Lane",
      "streetLine2": "Apt #3",
      "city": "Atlanta",
      "state": "GA",
      "postalCode": "30327",
      "countryCode": "USD",
      "email": "john.doe@example.com",
      "phone": "555-555-0987"
    }
  ],
  "updateDate": "2020-03-02T19:27:52Z",
  "createDate": "2020-03-01T19:27:52Z",
  "_links": {
    "self": {
        "href": "https://api.safely.com/v1/reservations/172551de-8159-4662-96ee-7d4070654e71"
    },
    "reservations": {
        "href": "https://api.safely.com/v1/reservations?page=1&limit=20"
    }
  }
}

Update a Reservations in an account

HTTP Request

PUT https://api.safely.com/v1/reservations/{id}/

Parameters

Name Type In Description
id string path Required
referenceId string body Optional
currency string body Optional
priceNightly number body Optional
priceTotal number body Optional
bookingDate string body Optional
arrivalDate string body Optional
departureDate string body Optional
adults integer body Optional
children integer body Optional
infants integer body Optional
pets integer body Optional
smoker boolean body Optional
status string body Optional
reservationType integer body Optional
bookingChannelType integer body Optional
propertyId integer body Optional. The id of the property the reservation will be assigned to
guests guest body Optional

Get Reservation Types

Request

$ curl https://api.safely.com/v1/reservations/types/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "STANDARD_GUEST",
    "name": "Standard Guest"
  },
  {
    "code": "LONG_TERM_GUEST",
    "name": "Long Term Guest"
  },
  {
    "code": "OWNER",
    "name": "Owner"
  },
  {
    "code": "GUEST_OF_OWNER",
    "name": "Guest of Owner"
  },
  {
    "code": "MAINTENANCE",
    "name": "Maintenance"
  },
  {
    "code": "Admin",
    "name": "Admin"
  },
  {
    "code": "OTHER",
    "name": "Other"
  }
]

Get a list of Reservation Types

HTTP Request

GET https://api.safely.com/v1/reservations/types/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Reservation Status

Request

$ curl https://api.safely.com/v1/reservations/status/?limit=20&page=0
  -H "Authorization: API_KEY"

Request

[
  {
    "code": "ACTiVE",
    "name": "Active"
  },
  {
    "code": "CANCELLED",
    "name": "Cancelled"
  },
  {
    "code": "COMPLETE",
    "name": "Complete"
  },
  {
    "code": "INACTIVE",
    "name": "Inactive"
  }
]

Get a list of Reservation Status

HTTP Request

GET https://api.safely.com/v1/reservations/status/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Verifications

Verification Object

{
  "id": "95a77462-d66d-4fc4-b782-815914d3d39b",
  "reservationId": null,
  "reservationReferenceId": null,
  "guest": {
    "firstName": "John",
    "middleName": null,
    "lastName": "Doe",
    "birthDate": "1980-07-04",
    "streetLine1": "123 Pine Lane",
    "streetLine2": "Apt #3",
    "city": "Atlanta",
    "state": "GA",
    "postalCode": "30327",
    "countryCode": "USD",
    "email": "john.doe@example.com",
    "phone": "555-555-0001"
  },
  "verificationPackage": {
    "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
    "name": "Gold Verification",
    "cost": 75.00,
    "currency": "USD",
    "verifications": [
      {
        "code": "BAD_GUEST",
        "name": "Safely Bad Guest List"
      },
      {
        "code": "IDENTIFICATION",
        "name": "Identification"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender"
      }
    ]
  },
  "verificationResults": {
    "status": "PROCESSING",
    "result": "PROCESSING",
    "details": [
      {
        "code": "BAD_GUEST",
        "name": "Bad Guest List",
        "status": "COMPLETED",
        "result": "PASSED"
      },
      {
        "code": "IDENTIFICATION",
        "name": "Identification",
        "status": "NEEDS_DATA",
        "result": "NEEDS_DATA"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal",
        "status": "COMPLETED",
        "result": "FAILED"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender List",
        "status": "PROCESSING",
        "result": "PROCESSING"
      }
    ]
  },
  "warnings": [
    {
      "checkCode": "CRIMINAL",
      "issue": "NEEDS_DATA",
      "field": "BIRTH_DATE",
      "status": "PENDING"
    }
  ]
}

The Verification is a request for a verification of a guest or other person. A Verification will automatically be performed on the primary guest of a Reservation when it is registered with Safely. The Verification performed on the guest will be dependent on the Verification Package assigned to the Property. For additional guests being verified, the verification request should be associated with the Reservation using either the reservationId or the reservationReferenceId. If both are provided they must both match the same Reservation.

Verifications can also be initiated for guests that are not associated with a Reservation. In this case, the reservationId and reservationReferenceId should be left as null and a Verification Package Id that is associated with the account should be provided. If no Verification Package Id is provided, the account's primary Verification Package will be used.

List Verifications

Request

$ curl https://api.safely.com/v1/verifications/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "verifications": [
      {
        "id": "95a77462-d66d-4fc4-b782-815914d3d39b",
        "reservationId": null,
        "reservationReferenceId": null,
        "guest": {
          "firstName": "John",
          "middleName": null,
          "lastName": "Doe",
          "birthDate": "1980-07-04",
          "streetLine1": "123 Pine Lane",
          "streetLine2": "Apt #3",
          "city": "Atlanta",
          "state": "GA",
          "postalCode": "30327",
          "countryCode": "USD",
          "email": "john.doe@example.com",
          "phone": "555-555-0001"
        },
        "verificationPackage": {
          "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
          "name": "Gold Verification",
          "cost": 75.00,
          "currency": "USD",
          "verifications": [
            {
              "code": "BAD_GUEST",
              "name": "Safely Bad Guest List"
            },
            {
              "code": "IDENTIFICATION",
              "name": "Identification"
            },
            {
              "code": "CRIMINAL",
              "name": "Criminal"
            },
            {
              "code": "SEX_OFFENDER",
              "name": "Sex Offender"
            }
          ]
        },
        "verificationResults": {
          "status": "PROCESSING",
          "result": "PROCESSING",
          "details": [
            {
              "code": "BAD_GUEST",
              "name": "Bad Guest List",
              "status": "COMPLETED",
              "result": "PASSED"
            },
            {
              "code": "CRIMINAL",
              "name": "Criminal",
              "status": "NEEDS_DATA",
              "result": "NEEDS_DATA"
            },
            {
              "code": "SEX_OFFENDER",
              "name": "Sex Offender List",
              "status": "PROCESSING",
              "result": "PROCESSING"
            }
          ]
        },
        "warnings": [
          {
            "checkCode": "CRIMINAL",
            "issue": "NEEDS_DATA",
            "field": "BIRTH_DATE",
            "status": "PENDING"
          }
        ],
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/verifications/95a77462-d66d-4fc4-b782-815914d3d39b"
          },
          "verifications": {
            "href": "https://api.safely.com/v1/verifications?limit=20&page=1"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/verifications?limit=20&page=1"
    }
  }
}

Get a list of verifications that have been performed for the account

HTTP Request

GET https://api.safely.com/v1/verifications/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Verification

Request

$ curl https://api.safely.com/v1/verifications/95a77462-d66d-4fc4-b782-815914d3d39b/
  -H "Authorization: API_KEY"

Response

{
  "id": "95a77462-d66d-4fc4-b782-815914d3d39b",
  "reservationId": null,
  "reservationReferenceId": null,
  "guest": {
    "firstName": "John",
    "middleName": null,
    "lastName": "Doe",
    "birthDate": "1980-07-04",
    "streetLine1": "123 Pine Lane",
    "streetLine2": "Apt #3",
    "city": "Atlanta",
    "state": "GA",
    "postalCode": "30327",
    "countryCode": "USD",
    "email": "john.doe@example.com",
    "phone": "555-555-0001"
  },
  "verificationPackage": {
    "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
    "name": "Gold Verification",
    "cost": 75.00,
    "currency": "USD",
    "verifications": [
      {
        "code": "BAD_GUEST",
        "name": "Safely Bad Guest List"
      },
      {
        "code": "IDENTIFICATION",
        "name": "Identification"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender"
      }
    ]
  },
  "verificationResults": {
    "status": "PROCESSING",
    "result": "PROCESSING",
    "details": [
      {
        "code": "BAD_GUEST",
        "name": "Bad Guest List",
        "status": "COMPLETED",
        "result": "PASSED"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal",
        "status": "NEEDS_DATA",
        "result": "NEEDS_DATA"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender List",
        "status": "PROCESSING",
        "result": "PROCESSING"
      }
    ]
  },
  "warnings": [
    {
      "checkCode": "CRIMINAL",
      "issue": "NEEDS_DATA",
      "field": "BIRTH_DATE",
      "status": "PENDING"
    }
  ],
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/verifications/95a77462-d66d-4fc4-b782-815914d3d39b"
    },
    "verifications": {
      "href": "https://api.safely.com/v1/verifications?limit=20&page=1"
    }
  }
}

Get a verification that has been performed for the account

HTTP Request

GET https://api.safely.com/v1/verifications/{id}/

Parameters

Name Type In Description
id string path The id of the verification to retrieve

Create Verification

Request

$ curl https://api.safely.com/v1/verifications/
  -H "Authorization: API_KEY" -X POST
  -b '{
        "reservationId": null,
        "reservationReferenceId": null,
        "guest": {
          "firstName": "John",
          "middleName": null,
          "lastName": "Doe",
          "birthDate": "1980-07-04",
          "streetLine1": "123 Pine Lane",
          "streetLine2": "Apt #3",
          "city": "Atlanta",
          "state": "GA",
          "postalCode": "30327",
          "countryCode": "USD",
          "email": "john.doe@example.com",
          "phone": "555-555-0001"
        },
        verificationPackage: {
          "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4"
        }
      }'

Response

{
  "id": "95a77462-d66d-4fc4-b782-815914d3d39b",
  "reservationId": null,
  "reservationReferenceId": null,
  "guest": {
    "firstName": "John",
    "middleName": null,
    "lastName": "Doe",
    "birthDate": "1980-07-04",
    "streetLine1": "123 Pine Lane",
    "streetLine2": "Apt #3",
    "city": "Atlanta",
    "state": "GA",
    "postalCode": "30327",
    "countryCode": "USD",
    "email": "john.doe@example.com",
    "phone": "555-555-0001"
  },
  "verificationPackage": {
    "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
    "name": "Gold Verification",
    "cost": 75.00,
    "currency": "USD",
    "verifications": [
      {
        "code": "BAD_GUEST",
        "name": "Safely Bad Guest List"
      },
      {
        "code": "IDENTIFICATION",
        "name": "Identification"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender"
      }
    ]
  },
  "verificationResults": {
    "status": "PROCESSING",
    "result": "PROCESSING",
    "details": [
      {
        "code": "BAD_GUEST",
        "name": "Bad Guest List",
        "status": "COMPLETED",
        "result": "PASSED"
      },
      {
        "code": "CRIMINAL",
        "name": "Criminal",
        "status": "NEEDS_DATA",
        "result": "NEEDS_DATA"
      },
      {
        "code": "SEX_OFFENDER",
        "name": "Sex Offender List",
        "status": "PROCESSING",
        "result": "PROCESSING"
      }
    ]
  },
  "warnings": [
    {
      "checkCode": "CRIMINAL",
      "issue": "NEEDS_DATA",
      "field": "BIRTH_DATE",
      "status": "PENDING"
    }
  ],
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/verifications/95a77462-d66d-4fc4-b782-815914d3d39b"
    },
    "verifications": {
      "href": "https://api.safely.com/v1/verifications?limit=20&page=1"
    }
  }
}

Create a verification for the account

HTTP Request

POST https://api.safely.com/v1/verifications/

Parameters

Name Type In Description
reservationId string body Optional: The reservation Id the verification should be associated with if the verification is tied to a reservation
reservationReferenceId string body Optional: The reference Id of the reservation to be assoicated with the verificaiton
guest object body Required: The data for the guest to be verified
verificationPackage object body Optional: The verification package to use if not using the default package for the acccount

Claims

Claim Object

{
  "id": "b318d122-b4c9-4f27-86e5-1b3cf6b046b3",
  "reservationId" : "172551de-8159-4662-96ee-7d4070654e71",
  "reservationReferenceId": "RED-0001",
  "propertyId" : "02f5b4d2-f3f3-4768-8d7e-f1c6f44164da",
  "propertyReferenceId": "PROP-0001",
  "damageDescription": "The linens in the damaged and needed to be replaced",
  "damageDate": "2020-09-04",
  "estimatedAmountOfDamage": 210.50,
  "finalAmountOfDamage": 215.00,
  "currencyOfDamage": "USD",
  "isDamageAccidental": true,
  "rentToGuestAgain": true,
  "sendCheckTo": "OWNER",
  "sendToFirstName": "John",
  "sendToLastName": "Doe",
  "sendToEmail": "john.doe@example.com",
  "sendToPhone": "555-555-0010",
  "sendToStreetLine1": "123 Homeowner Lane",
  "sendToStreetLine2": null, 
  "sendToCity": "Atlanta",
  "sendToState": "GA",
  "sendToPostalCode": "30306",
  "sendToCountryCode": "USA",
  "submissionStatus": "DRAFT",
  "adjustingStatus": "PENDING",
  "paymentStatus": "PENDING",
  "claimStatus": "NEW",
  "submitDate": "2020-09-06T11:45:00Z",
  "claimType": "ORIGINAL",
  "lossTypes": ["DAMAGE_TO_CONTENTS"],
  "isPropertyLivable": true,
  "updateDate": "2020-09-05T11:45:00Z",
  "createDate": "2020-09-05T11:30:00Z"
}

A Claim is created to recover funds against damage that is covered by the Damage Policy for Property. To create a new Claim, the reservationId or reservationReferenceId must be provided. If both are provided, they must both map to the same Reservation. The new Claim should also include the propertyId or propertyReferenceId that the Reservation is associated with. Additional fields are required per the documentation.

List Claims

Request

$ curl https://api.safely.com/v1/claims/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

HTTP Request

GET https://api.safely.com/v1/claims/?limit=20&page=1

Parameters

Get Claim

Request

$ curl https://api.safely.com/v1/claims/{id}/
  -H "Authorization: API_KEY"

Response

HTTP Request

GET https://api.safely.com/v1/claims/{id}/

Parameters

Create Claim

Request

$ curl https://api.safely.com/v1/claims/
  -H "Authorization: API_KEY" -X POST
  -b '{}'

Response

HTTP Request

POST https://api.safely.com/v1/claims/

Parameters

Update Claim

Request

$ curl https://api.safely.com/v1/claims/{id}/
  -H "Authorization: API_KEY" -X PUT
  -b '{}'

Response

HTTP Request

PUT https://api.safely.com/v1/claims/{id}/

Parameters

Loss Types

Request

$ curl https://api.safely.com/v1/claims/losstypes/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "DAMAGE_RENTAL_PROPERTY",
    "name": "Damage to Rental Property",
  },
  {
    "code": "DAMAGE_GUEST_PROPERTY",
    "name": "Damage to Guest Property",
  },
  {
    "code": "",
    "name": "Damage to Guest Property",
  }
]

HTTP Request

GET https://api.safely.com/v1/claims/losstypes/

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Send Check To Types

Request

$ curl https://api.safely.com/v1/claims/sendto/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "OWNER",
    "name": "Owner",
  },
  {
    "code": "PROPERTY_MANAGER",
    "name": "Property Manager",
  }
]

HTTP Request

GET https://api.safely.com/v1/claims/sendto/

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Damage Policy Packages

Damage Policy Package

{
  "id": "05c1044d-b1e6-47a6-bfa5-09bcfedbcd15",
  "name": "SAFELY-1M-10K",
  "isDefaultPackage": true,
  "startDate": "2020-01-01",
  "endDate": "2021-01-01",
  "deductible": 100.00,
  "coverages": [
    {
      "coverageType": "CONTENTS",
      "coverage": 10000.00
    },
    {
      "coverageType": "BODILY_INJURY_AND_STRUCTURAL",
      "coverage": 1000000.00
    }
  ]
}

Damage Policy Packages are the damage policy packages active for the Account. The account will have a single default Package and a single Package will be associated with each Property that is active in the Account. When a Reservation is received it will receive the Damage Policy associated with the Property at which the Reservation is taking place.

List Damage Policy Package

Request

$ curl https://api.safely.com/v1/damagepolicypackages/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "damagePolicyPackages": [
      {
        "id": "05c1044d-b1e6-47a6-bfa5-09bcfedbcd15",
        "name": "SAFELY-1M-10K",
        "isDefaultPackage": true,
        "startDate": "2020-01-01",
        "endDate": "2021-01-01",
        "deductible": 100.00,
        "coverages": [
          {
            "coverageType": "CONTENTS",
            "coverage": 10000.00
          },
          {
            "coverageType": "BODILY_INJURY_AND_STRUCTURAL",
            "coverage": 1000000.00
          }
        ],
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/damagepolicypackages/05c1044d-b1e6-47a6-bfa5-09bcfedbcd15"
          },
          "damagePolicyPackages": {
            "href": "https://api.safely.com/v1/damagepolicypackages?limit=20&page=1"
          }
        }
      }
    ]
  }, 
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/damagepolicypackages?limit=20&page=1"
    }
  }
}

HTTP Request

GET https://api.safely.com/v1/damagepolicypackages/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Damage Policy Package

Request

$ curl https://api.safely.com/v1/damagepolicypackages/05c1044d-b1e6-47a6-bfa5-09bcfedbcd15/
  -H "Authorization: API_KEY"

Response

{
  "id": "05c1044d-b1e6-47a6-bfa5-09bcfedbcd15",
  "name": "SAFELY-1M-10K",
  "isDefaultPackage": true,
  "startDate": "2020-01-01",
  "endDate": "2021-01-01",
  "deductible": 100.00,
  "coverages": [
    {
      "coverageType": "CONTENTS",
      "coverage": 10000.00
    },
    {
      "coverageType": "BODILY_INJURY_AND_STRUCTURAL",
      "coverage": 1000000.00
    }
  ],
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/damagepolicypackages/05c1044d-b1e6-47a6-bfa5-09bcfedbcd15"
    },
    "damagePolicyPackages": {
      "href": "https://api.safely.com/v1/damagepolicypackages?limit=20&page=1"
    }
  }
}

HTTP Request

GET https://api.safely.com/v1/damagepolicypackages/{id}/

Parameters

Name Type In Description
id string path Id of the damage policy package

Verification Packages

Verification Package Object

{
  "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
  "name": "Gold Verification",
  "cost": 75.00,
  "currency": "USD",
  "isDefaultPackage": true,
  "verifications": [
    {
      "code": "BAD_GUEST",
      "name": "Safely Bad Guest List"
    },
    {
      "code": "IDENTIFICATION",
      "name": "Identification"
    },
    {
      "code": "CRIMINAL",
      "name": "Criminal"
    },
    {
      "code": "SEX_OFFENDER",
      "name": "Sex Offender"
    }
  ]
}

Verificaiton Packages are the verifications packages active for the Account. The account will have a single default Package and a single Package will be associated with each Property that is active in the Account. When a Reservation is received it will receive the Verification Policy associated with the Property at which the Reservation is taking place. The primary guest for the Reservation will be verified.

In additional, clients may initiate additional Verifications. The extra Verifications will use the specified/requested Verification Package or the Account's primary if a specific package is not requested.

List Verification Package

Request

$ curl https://api.safely.com/v1/verificationpackages/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "verificationPackages": [
      {
        "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
        "name": "Gold Verification",
        "cost": 75.00,
        "currency": "USD",
        "isDefaultPackage": true,
        "verifications": [
          {
            "code": "BAD_GUEST",
            "name": "Safely Bad Guest List"
          },
          {
            "code": "IDENTIFICATION",
            "name": "Identification"
          },
          {
            "code": "CRIMINAL",
            "name": "Criminal"
          },
          {
            "code": "SEX_OFFENDER",
            "name": "Sex Offender"
          }
        ],
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/verificationpackages/bd2d3d8f-1909-41e1-91a7-6c718f8392f4"
          },
          "users": {
            "href": "https://api.safely.com/v1/verificationpackages?limit=20&page=1"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/verificationpackages?limit=20&page=1"
    }
  }
}

Get a list of verification packages available for the account.

HTTP Request

GET https://api.safely.com/v1/verificationpackages/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get Verification Package

Request

$ curl https://api.safely.com/v1/verificationpackages/bd2d3d8f-1909-41e1-91a7-6c718f8392f4/
  -H "Authorization: API_KEY"

Response

{
  "id": "bd2d3d8f-1909-41e1-91a7-6c718f8392f4",
  "name": "Gold Verification",
  "cost": 75.00,
  "currency": "USD",
  "isDefaultPackage": true,
  "verifications": [
    {
      "code": "BAD_GUEST",
      "name": "Safely Bad Guest List"
    },
    {
      "code": "IDENTIFICATION",
      "name": "Identification"
    },
    {
      "code": "CRIMINAL",
      "name": "Criminal"
    },
    {
      "code": "SEX_OFFENDER",
      "name": "Sex Offender"
    }
  ],
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/verificationpackages/bd2d3d8f-1909-41e1-91a7-6c718f8392f4"
    },
    "users": {
      "href": "https://api.safely.com/v1/verificationpackages?limit=20&page=1"
    }
  }
}

HTTP Request

GET https://api.safely.com/v1/verificationpackages/{id}/

Parameters

Name Type In Description
id string path Id of the verification package

Accounts

Account Object

{
  "id": "931aa7f1-66e3-4228-b4b5-6dce0f7fcf2b",
  "name": "Acme Management, LLC",
  "guestFriendlyName": "Acme Management",
  "website": "https://www.acmemanagement.com",
  "logoUrl": null,
  "streetLine1": "987 Acme Rd",
  "streetLine2": "Suite 100",
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30062",
  "countryCode": "USA",
  "contacts": [
    {
      "id": "c7c0a162-0ad0-4d5a-acbd-f8955810155d",
      "type": "PRIMARY",
      "firstName": "Jane",
      "lastName": "Doe",
      "email" : "jane.doe@example.com",
      "phone" : "555-555-0002"
    },
    {
      "id": "8bc238ef-87a9-4444-a7b0-9417a5f6bdcc",
      "type": "BILLING",
      "firstName": "John",
      "lastName": "Doe",
      "email" : "john.doe@example.com",
      "phone" : "555-555-0003"
    }
  ],
  "damagePolicies": [],
  "verificationPolicies": [],
  "tripCancellationPolicies": [],
  "accountType": "PROPERTY_MANAGER",
  "updateDate": "2020-04-01T17:30:00Z",
  "createDate": "2020-04-01T16:30:00Z"
}

The account level information for the client.

Get Account

Request

$ curl https://api.safely.com/v1/accounts/
  -H "Authorization: API_KEY"

Response

{
  "id": "931aa7f1-66e3-4228-b4b5-6dce0f7fcf2b",
  "name": "Acme Management, LLC",
  "guestFriendlyName": "Acme Management",
  "website": "https://www.acmemanagement.com",
  "logoUrl": null,
  "streetLine1": "987 Acme Rd",
  "streetLine2": "Suite 100",
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30062",
  "countryCode": "USA",
  "contacts": [
    {
      "id": "c7c0a162-0ad0-4d5a-acbd-f8955810155d",
      "type": "PRIMARY",
      "firstName": "Jane",
      "lastName": "Doe",
      "email" : "jane.doe@example.com",
      "phone" : "555-555-0002"
    },
    {
      "id": "8bc238ef-87a9-4444-a7b0-9417a5f6bdcc",
      "type": "BILLING",
      "firstName": "John",
      "lastName": "Doe",
      "email" : "john.doe@example.com",
      "phone" : "555-555-0003"
    }
  ],
  "damagePolicies": [],
  "verificationPolicies": [],
  "tripCancellationPolicies": [],
  "accountType": "PROPERTY_MANAGER",
  "updateDate": "2020-04-01T17:30:00Z",
  "createDate": "2020-04-01T16:30:00Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/accounts/931aa7f1-66e3-4228-b4b5-6dce0f7fcf2b"
    },
    "accounts": {
      "href": "https://api.safely.com/v1/accounts?limit=20&page=1"
    }
  }
}

HTTP Request

GET https://api.safely.com/v1/accounts/

Parameters

Name Type In Description

none

Update Account

Request

$ curl https://api.safely.com/v1/accounts/
  -H "Authorization: API_KEY" -X PUT
  -b '{
        "logoUrl": "https://www.acmemanagement.com/logo.png"
      }'

Response

{
  "id": "931aa7f1-66e3-4228-b4b5-6dce0f7fcf2b",
  "name": "Acme Management, LLC",
  "guestFriendlyName": "Acme Management",
  "website": "https://www.acmemanagement.com",
  "logoUrl": "https://www.acmemanagement.com/logo.png",
  "streetLine1": "987 Acme Rd",
  "streetLine2": "Suite 100",
  "city": "Atlanta",
  "state": "GA",
  "postalCode": "30062",
  "countryCode": "USA",
  "contacts": [
    {
      "id": "c7c0a162-0ad0-4d5a-acbd-f8955810155d",
      "type": "PRIMARY",
      "firstName": "Jane",
      "lastName": "Doe",
      "email" : "jane.doe@example.com",
      "phone" : "555-555-0002"
    },
    {
      "id": "8bc238ef-87a9-4444-a7b0-9417a5f6bdcc",
      "type": "BILLING",
      "firstName": "John",
      "lastName": "Doe",
      "email" : "john.doe@example.com",
      "phone" : "555-555-0003"
    }
  ],
  "damagePolicies": [],
  "verificationPolicies": [],
  "tripCancellationPolicies": [],
  "accountType": "PROPERTY_MANAGER",
  "updateDate": "2020-04-01T17:30:00Z",
  "createDate": "2020-04-01T16:30:00Z",
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/accounts/931aa7f1-66e3-4228-b4b5-6dce0f7fcf2b"
    },
    "accounts": {
      "href": "https://api.safely.com/v1/accounts?limit=20&page=1"
    }
  }
}

HTTP Request

PUT https://api.safely.com/v1/accounts/

Parameters

Name Type In Description
website string body Optional
logoUrl string body Optional
streeLine1 string body Optional
streetLine2 string body Optional
city string body Optional
state string body Optional
postalCode string body Optional
countryCode string body Optional
website string body Optional

User

User Object

{
  "id": "4bec18aa-ef3c-4f06-b4ca-190a113e17cf",
  "firstName": "John",
  "lastName": "Doe",
  "login": "johndoe@example.com",
  "email": "johndoe@example.com",
  "status": "ACTIVE",
  "updateDate": "2020-04-01T14:25:19Z",
  "createDate": "2020-04-01T12:25:19Z"
}

User level data for Accounts with multiple users on a single account.

List Users

Request

$ curl https://api.safely.com/v1/users/?limit=20&page=1
  -H "Authorization: API_KEY"

Response

{
  "_embedded": {
    "users": [
      {
        "id": "4bec18aa-ef3c-4f06-b4ca-190a113e17cf",
        "firstName": "John",
        "lastName": "Doe",
        "login": "johndoe@example.com",
        "email": "johndoe@example.com",
        "status": "ACTIVE",
        "updateDate": "2020-04-01T14:25:19Z",
        "createDate": "2020-04-01T12:25:19Z",
        "_links": {
          "self": {
            "href": "https://api.safely.com/v1/users/4bec18aa-ef3c-4f06-b4ca-190a113e17cf"
          },
          "users": {
            "href": "https://api.safely.com/v1/users?limit=20&page=1"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://api.safely.com/v1/users?limit=20&page=1"
    }
  }
}

Get a list of users for the account.

HTTP Request

GET https://api.safely.com/v1/users/?limit=20&page=1

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Get User

Request

$ curl https://api.safely.com/v1/users/4bec18aa-ef3c-4f06-b4ca-190a113e17cf/
  -H "Authorization: API_KEY"

Response

{
    "id": "4bec18aa-ef3c-4f06-b4ca-190a113e17cf",
    "firstName": "John",
    "lastName": "Doe",
    "login": "johndoe@example.com",
    "email": "johndoe@example.com",
    "status": "ACTIVE",
    "updateDate": "2020-04-01T14:25:19Z",
    "createDate": "2020-04-01T12:25:19Z",
    "_links": {
      "self": {
        "href": "https://api.safely.com/v1/users/4bec18aa-ef3c-4f06-b4ca-190a113e17cf"
      },
      "users": {
        "href": "https://api.safely.com/v1/users?limit=20&page=1"
      }
    }
}

Get a specific user's information

HTTP Request

GET https://api.safely.com/v1/users/{id}/

Parameters

Name Type In Description
id string path The id of the user to retrieve

Lookups

Countries

Request

$ curl https://api.safely.com/v1/countries/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "USA",
    "name": "United States of America",
  },
  {
    "code": "CAN",
    "name": "Canada",
  },
  {
    "code": "MEX",
    "name": "Mexico"
  }
]

Get the list of Countries that are accepted for country codes

HTTP Request

GET https://api.safely.com/v1/countries/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

States

Request

$ curl https://api.safely.com/v1/countries/usa/states/?limit=20&page=0
-H "Authorization: API_KEY"

Response

[
  {
    "code": "AL",
    "name": "Alabama",
  },
  {
    "code": "Alaska",
    "name": "AK",
  },
  {
    "code": "AZ",
    "name": "Arizona"
  }
]

Get the list of States that are accepted for a country

HTTP Request

GET https://api.safely.com/v1/countries/{countryCode}/states/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Currencies

Request

$ curl https://api.safely.com/v1/currencies/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "USD",
    "name": "US Dollar",
  },
  {
    "code": "CAD",
    "name": "Canadian Dollar",
  }
]

Get the list of Currencies

HTTP Request

GET https://api.safely.com/v1/currencies/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Booking Channels

Request

$ curl https://api.safely.com/v1/bookingchannels/?limit=20&page=0
  -H "Authorization: API_KEY"

Response

[
  {
    "code": "AIRBNB",
    "name": "Airbnb",
  },
  {
    "code": "HOMEWAY",
    "name": "Homeaway",
  },
  {
    "code": "BOOKING_COM",
    "name": "Booking.com"
  },
  {
    "code": "OTHER",
    "name": "Other"
  }
]

Get the list of Booking Channels

HTTP Request

GET https://api.safely.com/v1/bookingchannels/?limit=20&page=0

Parameters

Name Type In Description
limit integer query Results per page (max 100)
page integer query The page number of the results to return (1-based)

Errors

The Kittn API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The resource requested is not allowed.
404 Not Found -- The specified resource could not be found.
405 Method Not Allowed -- You tried to access a resource with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The resource requested has been removed from our servers.
429 Too Many Requests -- API throttle limit reached.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.