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
- All API requests must be made over HTTPS.
- All requests and response content is JSON.
- All endpoint names are plural. ie:
reservations
vs.reservation
- All field names are camel cased. ie:
reservationId
- GET requestions for lists are paginated with a default page size of
20
and a maximum page size of100
. - Date and Time fields follow the ISO-8601 standard.
- If an ISO-8601 datetime does not specify a timezone, assume UTC.
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 |
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 |
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. |