MENU navbar-image

Introduction

Showdigs API Documentation

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your integrations settings page.

Agent Coverage

Endpoints for checking agent coverage.

Check location coverage

requires authentication

Returns the coverage status of a location. For better accuracy and performance, we recommend using the latitude and longitude parameters.

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/coverage?latitude=40.762569&longitude=-73.8314318" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/coverage"
);

const params = {
    "latitude": "40.762569",
    "longitude": "-73.8314318",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/coverage',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'latitude' => '40.762569',
            'longitude' => '-73.8314318',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/coverage'
params = {
  'latitude': '40.762569',
  'longitude': '-73.8314318',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": {
        "is_covered": true,
        "network": "primary"
    }
}
 

Example response (200):


{
    "data": {
        "is_covered": true,
        "network": "secondary"
    }
}
 

Example response (200):


{
    "data": {
        "is_covered": false,
        "network": "none"
    }
}
 

Example response (422):


{
    "message": "failed to match given address to a place"
}
 

Request   

GET api/v1/coverage

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

latitude   number   

Coordinate latitude. Example: 40.762569

longitude   number   

Coordinate longitude. Example: -73.8314318

address   string  optional  

Units

Endpoints for managing units.

Get all units

requires authentication

Returns a paginated list of all units.

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/units?page=1&per_page=10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/units"
);

const params = {
    "page": "1",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/units',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/units'
params = {
  'page': '1',
  'per_page': '10',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "id": "e6aecd63-4b22-43e5-a468-1a83501d4b20",
            "timezone": "Asia/Jerusalem",
            "name": null,
            "short_address": "4821 Wilburn Hill, East Isadorefurt",
            "vicinity": "East Isadorefurt",
            "location": {
                "latitude": 32.00477,
                "longitude": 34.911831
            },
            "size": null,
            "bedrooms": null,
            "bathrooms": null,
            "listing_title": null,
            "listing_description": null,
            "amenities": [],
            "is_showing": false,
            "origin_id": null
        },
        {
            "id": "c25b1a59-1dc7-4147-81d8-8e25087e78a1",
            "timezone": "Asia/Jerusalem",
            "name": null,
            "short_address": "863 Borer Points, Rippinshire",
            "vicinity": "Rippinshire",
            "location": {
                "latitude": 32.080976,
                "longitude": 34.885906
            },
            "size": null,
            "bedrooms": null,
            "bathrooms": null,
            "listing_title": null,
            "listing_description": null,
            "amenities": [],
            "is_showing": false,
            "origin_id": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "current_page_url": "/?page=1",
        "from": 1,
        "path": "/",
        "per_page": "10",
        "to": 2
    }
}
 

Request   

GET api/v1/units

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

The page number. Must be at least 1. Example: 1

per_page   integer  optional  

The number of items per page. Must be at least 1. Must not be greater than 100. Example: 10

Get unit by uuid

requires authentication

Returns a specific unit by UUID.

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/units/e1d8e8da-36e5-4083-83db-1f2bd1e35c6a" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/units/e1d8e8da-36e5-4083-83db-1f2bd1e35c6a"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/units/e1d8e8da-36e5-4083-83db-1f2bd1e35c6a',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/units/e1d8e8da-36e5-4083-83db-1f2bd1e35c6a'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "id": "f2377245-18f1-44e5-96e0-abd9c4846323",
        "timezone": "Asia/Jerusalem",
        "name": null,
        "short_address": "844 Davion Burg Suite 438, South Letaberg",
        "vicinity": "South Letaberg",
        "location": {
            "latitude": 32.01443,
            "longitude": 34.863112
        },
        "size": null,
        "bedrooms": null,
        "bathrooms": null,
        "listing_title": null,
        "listing_description": null,
        "amenities": [],
        "is_showing": false,
        "origin_id": null
    }
}
 

Request   

GET api/v1/units/{uuid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

uuid   string   

The UUID of the unit. Example: e1d8e8da-36e5-4083-83db-1f2bd1e35c6a

Listings

Endpoints for managing listings.

Create a Listing

requires authentication

Example request:
curl --request POST \
    "https://api.showdigs.com/api/v1/units/123e4567-e89b-12d3-a456-426614174000/listing" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"blanditiis\",
    \"agent_backup\": true,
    \"only_consecutive_tours\": true,
    \"property_link\": \"https:\\/\\/example.com\\/property\",
    \"application_link\": \"https:\\/\\/example.com\\/application\",
    \"manager_email\": \"manager@example.com\",
    \"access_hardware\": \"keypad\",
    \"access_code\": \"1234 (required for non smart access hardware such as lockboxes or keypads)\",
    \"serial_number\": \"12345678 (required if `access_hardware` is set to smart device: Codebox, Sentrilock)\",
    \"notes\": \"This is a sample listing.\",
    \"tours_limit\": 10,
    \"rent\": 1000,
    \"security_deposit\": 500,
    \"screening_template_uuid\": \"123e4567-e89b-12d3-a456-426614174000\",
    \"schedule_template_uuid\": \"123e4567-e89b-12d3-a456-426614174000 (required if `type` is restricted)\",
    \"ai_identity_verification\": true,
    \"tenants\": null,
    \"report_emails\": null,
    \"availability_date\": \"2023-01-01\",
    \"showing_start_date\": \"2023-01-01\"
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/units/123e4567-e89b-12d3-a456-426614174000/listing"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "blanditiis",
    "agent_backup": true,
    "only_consecutive_tours": true,
    "property_link": "https:\/\/example.com\/property",
    "application_link": "https:\/\/example.com\/application",
    "manager_email": "manager@example.com",
    "access_hardware": "keypad",
    "access_code": "1234 (required for non smart access hardware such as lockboxes or keypads)",
    "serial_number": "12345678 (required if `access_hardware` is set to smart device: Codebox, Sentrilock)",
    "notes": "This is a sample listing.",
    "tours_limit": 10,
    "rent": 1000,
    "security_deposit": 500,
    "screening_template_uuid": "123e4567-e89b-12d3-a456-426614174000",
    "schedule_template_uuid": "123e4567-e89b-12d3-a456-426614174000 (required if `type` is restricted)",
    "ai_identity_verification": true,
    "tenants": null,
    "report_emails": null,
    "availability_date": "2023-01-01",
    "showing_start_date": "2023-01-01"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.showdigs.com/api/v1/units/123e4567-e89b-12d3-a456-426614174000/listing',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'blanditiis',
            'agent_backup' => true,
            'only_consecutive_tours' => true,
            'property_link' => 'https://example.com/property',
            'application_link' => 'https://example.com/application',
            'manager_email' => 'manager@example.com',
            'access_hardware' => 'keypad',
            'access_code' => '1234 (required for non smart access hardware such as lockboxes or keypads)',
            'serial_number' => '12345678 (required if `access_hardware` is set to smart device: Codebox, Sentrilock)',
            'notes' => 'This is a sample listing.',
            'tours_limit' => 10,
            'rent' => 1000,
            'security_deposit' => 500,
            'screening_template_uuid' => '123e4567-e89b-12d3-a456-426614174000',
            'schedule_template_uuid' => '123e4567-e89b-12d3-a456-426614174000 (required if `type` is restricted)',
            'ai_identity_verification' => true,
            'tenants' => null,
            'report_emails' => null,
            'availability_date' => '2023-01-01',
            'showing_start_date' => '2023-01-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/units/123e4567-e89b-12d3-a456-426614174000/listing'
payload = {
    "type": "blanditiis",
    "agent_backup": true,
    "only_consecutive_tours": true,
    "property_link": "https:\/\/example.com\/property",
    "application_link": "https:\/\/example.com\/application",
    "manager_email": "manager@example.com",
    "access_hardware": "keypad",
    "access_code": "1234 (required for non smart access hardware such as lockboxes or keypads)",
    "serial_number": "12345678 (required if `access_hardware` is set to smart device: Codebox, Sentrilock)",
    "notes": "This is a sample listing.",
    "tours_limit": 10,
    "rent": 1000,
    "security_deposit": 500,
    "screening_template_uuid": "123e4567-e89b-12d3-a456-426614174000",
    "schedule_template_uuid": "123e4567-e89b-12d3-a456-426614174000 (required if `type` is restricted)",
    "ai_identity_verification": true,
    "tenants": null,
    "report_emails": null,
    "availability_date": "2023-01-01",
    "showing_start_date": "2023-01-01"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201, success):


{
    "listing_uuid": "123e4567-e89b-12d3-a456-426614174000",
    "scheduling_url": "https://showdigs.co/x1Y2z3"
}
 

Example response (404, unit not found):


{
    "message": "Unit not found"
}
 

Example response (422, validation error):


{
    "message": "Validation error",
    "errors": {
        "field_name": [
            "The field_name field is required."
        ]
    }
}
 

Request   

POST api/v1/units/{uuid}/listing

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

uuid   string   

The UUID of the listing. Example: 123e4567-e89b-12d3-a456-426614174000

Body Parameters

type   string   

The type of the listing. Supported values: high_availability, publish_listing, self_showing, restricted Example: blanditiis

agent_backup   boolean  optional  

Example: true

only_consecutive_tours   boolean  optional  

Example: true

property_link   string   

The URL of the property. Example: https://example.com/property

application_link   string   

The URL of the application. Example: https://example.com/application

manager_email   string   

The email of the manager. Example: manager@example.com

access_hardware   string   

The type of access hardware. Example: keypad

access_code   string  optional  

The access code. Example: 1234 (required for non smart access hardware such as lockboxes or keypads)

serial_number   string  optional  

A smart access device serial number. Example: 12345678 (required ifaccess_hardwareis set to smart device: Codebox, Sentrilock)

notes   string   

Notes about the listing. Example: This is a sample listing.

tours_limit   integer   

The limit of tours. Example: 10

rent   integer   

The rent amount. Example: 1000

security_deposit   integer  optional  

The security deposit amount. Example: 500

screening_template_uuid   string  optional  

The UUID of the screening template. Example: 123e4567-e89b-12d3-a456-426614174000

schedule_template_uuid   string  optional  

The UUID of the schedule template. Example: 123e4567-e89b-12d3-a456-426614174000 (required iftypeis restricted)

ai_identity_verification   boolean  optional  

Whether AI identity verification is enabled. Example: true

tenants   string[]   

The list of tenants.

first_name   string  optional  

This field is required when tenants.*.last_name is not present. Must be at least 2 characters. Example: uplplskuzfrkgzquezjffncprnchuzbtyaeqyzr

last_name   string  optional  

This field is required when tenants.*.first_name is not present. Must be at least 2 characters. Example: dimeapbqjuygnngebecfpekmdxukes

phone_number   string  optional  

This field is required when tenants.*.email is not present.

email   string  optional  

This field is required when tenants.*.phone_number is not present.

report_emails   string[]  optional  

The list of emails that will receive reports about this listing.

availability_date   date  optional  

The availability date. Example: 2023-01-01

showing_start_date   date  optional  

The showing start date. Example: 2023-01-01

Update a Listing

requires authentication

Update a listing by UUID param.

Example request:
curl --request PUT \
    "https://api.showdigs.com/api/v1/units/3915d06b-54b8-38b5-9547-4460a4b2482a/listing" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rent\": 1500,
    \"security_deposit\": 500,
    \"application_url\": \"https:\\/\\/application.com\\/123Main\",
    \"notes\": \"Updated notes\"
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/units/3915d06b-54b8-38b5-9547-4460a4b2482a/listing"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rent": 1500,
    "security_deposit": 500,
    "application_url": "https:\/\/application.com\/123Main",
    "notes": "Updated notes"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://api.showdigs.com/api/v1/units/3915d06b-54b8-38b5-9547-4460a4b2482a/listing',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'rent' => 1500,
            'security_deposit' => 500,
            'application_url' => 'https://application.com/123Main',
            'notes' => 'Updated notes',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/units/3915d06b-54b8-38b5-9547-4460a4b2482a/listing'
payload = {
    "rent": 1500,
    "security_deposit": 500,
    "application_url": "https:\/\/application.com\/123Main",
    "notes": "Updated notes"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


scenario { "message": "Listing updated successfully" }
 

Example response (404):


scenario { "message": "Unit not found" }
 

Example response (422):


scenario { "message": "Unit is not listed" }
 

Request   

PUT api/v1/units/{uuid}/listing

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

uuid   string   

Example: 3915d06b-54b8-38b5-9547-4460a4b2482a

Body Parameters

rent   integer  optional  

nullable The rent amount. Example: 1500

security_deposit   integer  optional  

nullable The security deposit amount. Example: 500

application_url   string  optional  

nullable The application url. Example: https://application.com/123Main

notes   string  optional  

nullable Additional notes. Example: Updated notes

List all listings

requires authentication

Returns a list of all listings.

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/listings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/listings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/listings',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/listings'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/listings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get listing by uuid

requires authentication

Returns a specific listing by UUID.

Please provide UUID for better accuracy and performance. UUID can be either Showdigs listing UUID or Appfolio's listing UUID.

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/listings/8de70ef2-caae-38e6-ab00-c4a1072e105e" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/listings/8de70ef2-caae-38e6-ab00-c4a1072e105e"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/listings/8de70ef2-caae-38e6-ab00-c4a1072e105e',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/listings/8de70ef2-caae-38e6-ab00-c4a1072e105e'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/listings/{uuid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

uuid   string   

Example: 8de70ef2-caae-38e6-ab00-c4a1072e105e

Delete listing by uuid

requires authentication

Delete a listing by UUID param.

Please provide UUID for better accuracy and performance. The UUID can be either Showdigs listing UUID or Appfolio's listing UUID.

Example request:
curl --request DELETE \
    "https://api.showdigs.com/api/v1/listings/bfca217d-995b-351c-a4e8-d38092d61ccc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/listings/bfca217d-995b-351c-a4e8-d38092d61ccc"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.showdigs.com/api/v1/listings/bfca217d-995b-351c-a4e8-d38092d61ccc',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/listings/bfca217d-995b-351c-a4e8-d38092d61ccc'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


scenario { "message": "Listing deactivated successfully" }
 

Example response (404):


scenario { "message": "Unit not found" }
 

Example response (422):


scenario { "message": "Unit is not listed" } || { "message": "Some tours are planned to take place soon and can not be cancelled, try deactivating the listing after those tours are completed" }
 

Request   

DELETE api/v1/listings/{uuid}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

uuid   string   

Example: bfca217d-995b-351c-a4e8-d38092d61ccc

Inquiries

Endpoints for managing inquiries.

Create an inquiry

requires authentication

Creates a new inquiry.

Example request:
curl --request POST \
    "https://api.showdigs.com/api/v1/inquiries" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"email\": \"johndoe@example.com\",
    \"phone_number\": \"+123456789\",
    \"property_interest\": \"42 florentia st, Seattle\",
    \"listing_id\": \"1f06224c-1587-49ac-999f-5e9fcca35fac\"
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/inquiries"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "johndoe@example.com",
    "phone_number": "+123456789",
    "property_interest": "42 florentia st, Seattle",
    "listing_id": "1f06224c-1587-49ac-999f-5e9fcca35fac"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.showdigs.com/api/v1/inquiries',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'John',
            'last_name' => 'Doe',
            'email' => 'johndoe@example.com',
            'phone_number' => '+123456789',
            'property_interest' => '42 florentia st, Seattle',
            'listing_id' => '1f06224c-1587-49ac-999f-5e9fcca35fac',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/inquiries'
payload = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "johndoe@example.com",
    "phone_number": "+123456789",
    "property_interest": "42 florentia st, Seattle",
    "listing_id": "1f06224c-1587-49ac-999f-5e9fcca35fac"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, Inquiry created):


{
    "inquiry_id": "7494ab9f-7da6-4598-8c3f-bc2c1f10e7b5",
    "scheduling_url": "https://showdigs.co/x1Y2z3"
}
 

Request   

POST api/v1/inquiries

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string   

The first name of the person making an inquiry. Example: John

last_name   string   

The last name of the person making an inquiry. Example: Doe

email   string   

The email of the person making an inquiry. Example: johndoe@example.com

phone_number   string   

The phone number of the person making an inquiry. Example: +123456789

property_interest   string   

if listing_id isn't provided. The property address (including unit name) prospect is interested in. Example: 42 florentia st, Seattle

listing_id   string   

if property_interest isn't provided. The listing id prospect is interested in. Example: 1f06224c-1587-49ac-999f-5e9fcca35fac

Response

Response Fields

inquiry_id   string   

The unique identifier of the inquiry.

scheduling_url   string   

The URL for scheduling.

Bot

GET api/v1/bots/business-info/{businessId}

requires authentication

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/bots/business-info/neque" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/bots/business-info/neque"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/bots/business-info/neque',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/bots/business-info/neque'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (422):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 180
x-ratelimit-remaining: 179
vary: Origin
 

{
    "message": "Business doesn't exist"
}
 

Request   

GET api/v1/bots/business-info/{businessId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

businessId   string   

Example: neque

POST api/v1/bots/conversation/message

requires authentication

Example request:
curl --request POST \
    "https://api.showdigs.com/api/v1/bots/conversation/message" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"businessDetails\": {
        \"businessId\": 11
    },
    \"conversationDetails\": {
        \"conversationId\": \"placeat\"
    },
    \"messageDetails\": {
        \"messageId\": \"optio\",
        \"direction\": \"quo\",
        \"content\": \"ducimus\",
        \"createdOn\": \"2026-02-10T09:04:16\"
    }
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/bots/conversation/message"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "businessDetails": {
        "businessId": 11
    },
    "conversationDetails": {
        "conversationId": "placeat"
    },
    "messageDetails": {
        "messageId": "optio",
        "direction": "quo",
        "content": "ducimus",
        "createdOn": "2026-02-10T09:04:16"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.showdigs.com/api/v1/bots/conversation/message',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'businessDetails' => [
                'businessId' => 11,
            ],
            'conversationDetails' => [
                'conversationId' => 'placeat',
            ],
            'messageDetails' => [
                'messageId' => 'optio',
                'direction' => 'quo',
                'content' => 'ducimus',
                'createdOn' => '2026-02-10T09:04:16',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/bots/conversation/message'
payload = {
    "businessDetails": {
        "businessId": 11
    },
    "conversationDetails": {
        "conversationId": "placeat"
    },
    "messageDetails": {
        "messageId": "optio",
        "direction": "quo",
        "content": "ducimus",
        "createdOn": "2026-02-10T09:04:16"
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Request   

POST api/v1/bots/conversation/message

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

businessDetails   object   
businessId   integer   

Example: 11

conversationDetails   object   
conversationId   string   

Example: placeat

messageDetails   object   
messageId   string   

Example: optio

direction   string   

Example: quo

content   string   

Example: ducimus

createdOn   string   

Must be a valid date. Example: 2026-02-10T09:04:16

overridePrompts   object  optional  

Endpoints

POST api/v1/webhooks/subscribe

requires authentication

Example request:
curl --request POST \
    "https://api.showdigs.com/api/v1/webhooks/subscribe" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\"
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/webhooks/subscribe"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.showdigs.com/api/v1/webhooks/subscribe',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'url' => 'https:',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/webhooks/subscribe'
payload = {
    "url": "https:"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Request   

POST api/v1/webhooks/subscribe

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

url   string   

Must be a valid URL. Must match the regex /^https:/. Example: https:

DELETE api/v1/webhooks/unsubscribe

requires authentication

Example request:
curl --request DELETE \
    "https://api.showdigs.com/api/v1/webhooks/unsubscribe" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/webhooks/unsubscribe"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.showdigs.com/api/v1/webhooks/unsubscribe',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/webhooks/unsubscribe'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request   

DELETE api/v1/webhooks/unsubscribe

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/v1/webhooks/sample

requires authentication

Example request:
curl --request GET \
    --get "https://api.showdigs.com/api/v1/webhooks/sample" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.showdigs.com/api/v1/webhooks/sample"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.showdigs.com/api/v1/webhooks/sample',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/webhooks/sample'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request   

GET api/v1/webhooks/sample

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Properties

Endpoints for managing properties and their units.

Create a Property and its Units

requires authentication

This endpoint allows you to create a new property along with its associated units.

Example request:
curl --request POST \
    "https://api.showdigs.com/api/v1/properties" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"origin_id\": \"p_1\",
    \"property_type\": \"Single Family Home\",
    \"street\": \"4536 S Pennsylvania Ave\",
    \"city\": \"Oklahoma City\",
    \"state\": \"OK\",
    \"zip\": \"73119\",
    \"latitude\": 35.4197022,
    \"longitude\": -97.5471714,
    \"units\": [
        {
            \"name\": \"Unit A\",
            \"bedrooms\": 3,
            \"bathrooms\": 2,
            \"size\": 1200,
            \"images\": [
                \"https:\\/\\/placehold.co\\/600x400\\/blue\\/black\"
            ]
        }
    ]
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/properties"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "origin_id": "p_1",
    "property_type": "Single Family Home",
    "street": "4536 S Pennsylvania Ave",
    "city": "Oklahoma City",
    "state": "OK",
    "zip": "73119",
    "latitude": 35.4197022,
    "longitude": -97.5471714,
    "units": [
        {
            "name": "Unit A",
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200,
            "images": [
                "https:\/\/placehold.co\/600x400\/blue\/black"
            ]
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.showdigs.com/api/v1/properties',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'origin_id' => 'p_1',
            'property_type' => 'Single Family Home',
            'street' => '4536 S Pennsylvania Ave',
            'city' => 'Oklahoma City',
            'state' => 'OK',
            'zip' => '73119',
            'latitude' => 35.4197022,
            'longitude' => -97.5471714,
            'units' => [
                [
                    'name' => 'Unit A',
                    'bedrooms' => 3,
                    'bathrooms' => 2,
                    'size' => 1200,
                    'images' => [
                        'https://placehold.co/600x400/blue/black',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/properties'
payload = {
    "origin_id": "p_1",
    "property_type": "Single Family Home",
    "street": "4536 S Pennsylvania Ave",
    "city": "Oklahoma City",
    "state": "OK",
    "zip": "73119",
    "latitude": 35.4197022,
    "longitude": -97.5471714,
    "units": [
        {
            "name": "Unit A",
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200,
            "images": [
                "https:\/\/placehold.co\/600x400\/blue\/black"
            ]
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201, Property created):


{
    "origin_id": "p_1",
    "created_at": "2024-07-25 13:40:54",
    "updated_at": "2024-07-25 13:40:54",
    "property_type": "Single Family Home",
    "short_address": "4536 S Pennsylvania Ave, Oklahoma City",
    "timezone": "America/Denver",
    "location": {
        "type": "Point",
        "coordinates": [
            -97.5471714,
            35.4197022
        ]
    },
    "units": [
        {
            "uuid": "u_1",
            "created_at": "2024-07-25 13:40:54",
            "updated_at": "2024-07-25 13:40:54",
            "name": null,
            "images": [
                "https://example.com/pic.jpg",
                "https://example.com/pic2.jpg"
            ],
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200
        }
    ]
}
 

Request   

POST api/v1/properties

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

origin_id   string  optional  

The unique identifier for the property. Example: p_1

property_type   string  optional  

The type of the property. Example: Single Family Home

street   string   

The street address of the property. Example: 4536 S Pennsylvania Ave

city   string   

The city where the property is located. Example: Oklahoma City

state   string   

The state where the property is located. Example: OK

zip   string   

The postal code of the property. Example: 73119

latitude   number   

The latitude coordinate of the property. Example: 35.4197022

longitude   number   

The longitude coordinate of the property. Example: -97.5471714

units   object[]   

An array of units associated with the property.

name   string  optional  

The name of the unit. Example: Unit A

bedrooms   integer  optional  

The number of bedrooms in the unit. Example: 3

bathrooms   integer  optional  

The number of bathrooms in the unit. Example: 2

size   integer  optional  

The size of the unit in square feet. Example: 1200

images   string[]  optional  

An array of image URLs for the unit.

Update a Property and its Units

requires authentication

This endpoint allows you to update an existing property along with its associated units.

Example request:
curl --request PUT \
    "https://api.showdigs.com/api/v1/properties/nulla" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"property_type\": \"Single Family Home\",
    \"street\": \"4536 S Pennsylvania Ave\",
    \"city\": \"Oklahoma City\",
    \"state\": \"OK\",
    \"zip\": \"73119\",
    \"latitude\": 35.4197022,
    \"longitude\": -97.5471714,
    \"units\": [
        {
            \"uuid\": \"54f4b3b3-1b1b-4b3b-8b3b-1b1b4b3b8b3b\",
            \"name\": \"Unit A\",
            \"bedrooms\": 3,
            \"bathrooms\": 2,
            \"size\": 1200,
            \"images\": [
                \"https:\\/\\/placehold.co\\/600x400\\/blue\\/black\"
            ]
        }
    ]
}"
const url = new URL(
    "https://api.showdigs.com/api/v1/properties/nulla"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "property_type": "Single Family Home",
    "street": "4536 S Pennsylvania Ave",
    "city": "Oklahoma City",
    "state": "OK",
    "zip": "73119",
    "latitude": 35.4197022,
    "longitude": -97.5471714,
    "units": [
        {
            "uuid": "54f4b3b3-1b1b-4b3b-8b3b-1b1b4b3b8b3b",
            "name": "Unit A",
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200,
            "images": [
                "https:\/\/placehold.co\/600x400\/blue\/black"
            ]
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://api.showdigs.com/api/v1/properties/nulla',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'property_type' => 'Single Family Home',
            'street' => '4536 S Pennsylvania Ave',
            'city' => 'Oklahoma City',
            'state' => 'OK',
            'zip' => '73119',
            'latitude' => 35.4197022,
            'longitude' => -97.5471714,
            'units' => [
                [
                    'uuid' => '54f4b3b3-1b1b-4b3b-8b3b-1b1b4b3b8b3b',
                    'name' => 'Unit A',
                    'bedrooms' => 3,
                    'bathrooms' => 2,
                    'size' => 1200,
                    'images' => [
                        'https://placehold.co/600x400/blue/black',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.showdigs.com/api/v1/properties/nulla'
payload = {
    "property_type": "Single Family Home",
    "street": "4536 S Pennsylvania Ave",
    "city": "Oklahoma City",
    "state": "OK",
    "zip": "73119",
    "latitude": 35.4197022,
    "longitude": -97.5471714,
    "units": [
        {
            "uuid": "54f4b3b3-1b1b-4b3b-8b3b-1b1b4b3b8b3b",
            "name": "Unit A",
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200,
            "images": [
                "https:\/\/placehold.co\/600x400\/blue\/black"
            ]
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (202, Property updated):


{
    "origin_id": "p_1",
    "created_at": "2024-07-25 13:40:54",
    "updated_at": "2024-07-25 13:40:54",
    "property_type": "Single Family Home",
    "short_address": "4536 S Pennsylvania Ave, Oklahoma City",
    "timezone": "America/Denver",
    "location": {
        "type": "Point",
        "coordinates": [
            -97.5471714,
            35.4197022
        ]
    },
    "units": [
        {
            "uuid": "u_1",
            "created_at": "2024-07-25 13:40:54",
            "updated_at": "2024-07-25 13:40:54",
            "name": null,
            "images": [
                "https://example.com/pic.jpg",
                "https://example.com/pic2.jpg"
            ],
            "bedrooms": 3,
            "bathrooms": 2,
            "size": 1200
        }
    ]
}
 

Example response (422, update property validation error):


{
    "message": "The given data was invalid.",
    "errors": {
        "street": [
            "The street field is required."
        ],
        "city": [
            "The city field is required."
        ],
        "state": [
            "The state field is required."
        ],
        "zip": [
            "The zip field is required."
        ],
        "latitude": [
            "The latitude field is required."
        ],
        "longitude": [
            "The longitude field is required."
        ],
        "units": [
            "The units field is required."
        ],
        "units.0.uuid": [
            "The units.0.uuid id field is required."
        ],
        "units.0.bedrooms": [
            "The units.0.bedrooms field is required."
        ],
        "units.0.bathrooms": [
            "The units.0.bathrooms field is required."
        ],
        "units.0.size": [
            "The units.0.size field is required."
        ]
    }
}
 

Request   

PUT api/v1/properties/{origin_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

origin_id   string   

The ID of the origin. Example: nulla

propertyOriginId   string   

The unique identifier for the property. Example: p_1

Body Parameters

property_type   string  optional  

The type of the property. Example: Single Family Home

street   string   

The street address of the property. Example: 4536 S Pennsylvania Ave

city   string   

The city where the property is located. Example: Oklahoma City

state   string   

The state where the property is located. Example: OK

zip   string   

The postal code of the property. Example: 73119

latitude   number   

The latitude coordinate of the property. Example: 35.4197022

longitude   number   

The longitude coordinate of the property. Example: -97.5471714

units   object[]   

An array of units associated with the property.

uuid   string  optional  

The unique identifier for the unit. Omitting this field implies you're creating a new unit. Example: 54f4b3b3-1b1b-4b3b-8b3b-1b1b4b3b8b3b

name   string  optional  

The name of the unit. Example: Unit A

bedrooms   integer  optional  

The number of bedrooms in the unit. Example: 3

bathrooms   integer  optional  

The number of bathrooms in the unit. Example: 2

size   integer  optional  

The size of the unit in square feet. Example: 1200

images   string[]  optional  

An array of image URLs for the unit.

Webhooks

Overview

Showdigs provides a webhook integration that allows you to receive requests in real-time.

In the settings page of your Showdigs account, you can configure a webhook URL to receive events. You can also configure a webhook access token to verify the authenticity of the request.

Showdigs Webhook Integration

Webhook events can be differentiated based on their event_type, which will be included as the first element in every webhook object.

Webhook Access Token

When the token is set, it will be included in the request headers.

"Authorization:" "Bearer TOKEN"

Inquiry Created

When a new inquiry is received for a property.

{
    "event_type": "new_inquiry",
    "inquiry_id": "4789",
    "unit_internal_id": "2345",
    "address": "506 E Howell St, Seattle - E-308",
    "timezone": "America/Los_Angeles",
    "prospect": {
        "id": 98,
        "first_name": "Brenna",
        "last_name": "Webb",
        "full_name": "Brenna Webb",
        "phone_number": "+972549143350",
        "email": "jelado@mailinator.com"
    },
    "comment": null,
    "inquiry_source": "Manual",
    "appfolio_listing_uuid": "0f6d64f4-47aa-4e83-ba79-8a423ff81331",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "Brenna Webb has inquired about 1473 22nd Ave, Seattle: https://app.showigs.com/prospects/98"
}

event_type
The webhook event.

inquiry_id
The inquiry identifier.

unit_internal_id
The PMS identifier for the property.

address
The address of the property the prospect is interested in.

timezone
The timezone the property is in.

prospect.id
The Showdigs prospect identifier.

prospect.first_name The prospect's first name.

prospect.last_name
The prospect's last name.

prospect.full_name
The prospect's full name.

prospect.phone_number The prospect's phone number.

prospect.email
The prospect's email.

comment
The message, if any, contained in the prospect’s inquiry.

inquiry_source The source of the inquiry.
Example values: Zillow Rental Network, Zillow, Manual, PM Website (the Showdigs listing page), plus many more

appfolio_listing_uuid
The AppFolio listing identifier.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened.

Disqualified Lead

When a prospect completes the pre-screening and is disqualified from touring a property.

{
    "event_type": "disqualified_lead",
    "inquiry_id": "4789",
    "unit_internal_id": "2345",
    "address": "506 E Howell St, Seattle - E-308",
    "timezone": "America/Los_Angeles",
    "prospect": {
        "id": 98,
        "first_name": "Brenna",
        "last_name": "Webb",
        "full_name": "Brenna Webb",
        "phone_number": "+972549143350",
        "email": "jelado@mailinator.com"
    },
    "pre_screening_answers": {
        "data": {
            "move_in_date": {
                "tour_at": "2023-03-18T18:30:00+02:00",
                "move_in_date": "2023-03-18T14:28:00.000Z"
            },
            "smoking_policy": "no",
            "minimum_lease_length": "2_years",
            "maximum_allowed_tenants": "1_tenant"
        },
        "is_qualified": false
    },
    "appfolio_listing_uuid": "0f6d64f4-47aa-4e83-ba79-8a423ff81331",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "Brenna Webb completed the pre-screening and was disqualified from touring 506 E Howell St, Seattle - E-308: https://app.showdigs.com/prospects/98"
}

event_type
The webhook event.

inquiry_id
The inquiry identifier.

unit_internal_id
The PMS identifier for the property.

address
The address of the property the prospect was disqualified from touring.

timezone
The timezone the property is in.

prospect.id
The Showdigs prospect identifier.

prospect.first_name The prospect's first name.

prospect.last_name
The prospect's last name.

prospect.full_name
The prospect's full name.

prospect.phone_number The prospect's phone number.

prospect.email
The prospect's email.

pre_screening_answers
This section contains the prospect's responses to pre-screening questions they were asked. The contents will differ based on your individual showing configuration.

appfolio_listing_uuid
The AppFolio listing identifier.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened.

Tour Scheduled

When a tour is scheduled.

{
    "event_type": "tour_scheduled",
    "tour_type": "agent",
    "tour_id": 59,
    "unit_internal_id": "my_int_id",
    "address": "1473 22nd Ave, Seattle",
    "timezone": "America/Los_Angeles",
    "tour_at": "2023-03-18T16:30:00.000Z",
    "tour_until": "2023-03-18T17:00:00.000Z",
    "inquiry_id": 456,
    "prospect_id": 123,
    "prospect_first_name": "Shanon",
    "prospect_last_name": "Klocko",
    "prospect_phone_number": "+201255564049",
    "prospect_email": "ouhwfiop@showdigs.testfake",
    "pre_screening_answers": {
        "data": {
            "move_in_date": {
                "tour_at": "2023-03-18T18:30:00+02:00",
                "move_in_date": "2023-03-18T14:28:00.000Z"
            },
            "smoking_policy": "no",
            "minimum_lease_length": "2_years",
            "maximum_allowed_tenants": "1_tenant"
        },
        "is_qualified": true
    },
    "identity_verification": null,
    "appfolio_listing_uuid": "8e9b8527-48a7-4e49-9c98-7d45203da399",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "Shanon Klocko scheduled a tour 1473 22nd Ave, Seattle: https://app.showdigs.com/tours/59"
}

event_type
The webhook event.

tour_type
The type of tour that was scheduled.
Possible values: self_showing, open_house, agent

tour_id
The Showdigs identifier for the tour. This will be consistent for a single tour across the tour-related webhooks.

unit_internal_id
The PMS identifier for the property.

address
The address of the property being toured.

timezone
The timezone the property is in.

tour_at
The scheduled start time for the tour.

tour_until
The scheduled end time for the tour.

inquiry_id
The inquiry identifier that led to the tour.

prospect_id
The Showdigs identifier for the prospect. This will be the same for the prospect for all properties they request to tour.

prospect_first_name
The prospect's first name.

prospect_last_name
The prospect's last name.

prospect_phone_number
The prospect's phone number.

prospect_email
The prospect's email address.

pre_screening_answers
This section contains the prospect's responses to pre-screening questions they were asked when scheduling the tour. The contents will differ based on your individual showing configuration.

pre_screening_answers.data.move_in_date
This provides the tour time and then the calculated move in date based on the "Move in date" pre-screening criteria.

pre_screening_answers.data.smoking_policy
The prospect's answer to the question, "will you be smoking in this property?"
Possible values: yes, no

pre_screening_answers.data.minimum_lease_length
The prospect's answer to the question, "how long are you planning to lease the property for?"

pre_screening_answers.data.maximum_allowed_tenants
The prospect's answer to the question, "how many tenants are expected to live in the property?"

pre_screening_answers.is_qualified
The overall result of the pre-screening questions.
Possible values: true (is qualified), false (is not qualified)

identity_verification
This is an area we are planning to build into. For now, this will always be null.

appfolio_listing_uuid
The AppFolio listing identifier.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened.

Tour Completed

When a tour is completed.

{
    "event_type": "tour_completed",
    "tour_type": "agent",
    "tour_id": 59,
    "outcome": "completed",
    "unit_internal_id": "my_int_id",
    "address": "1473 22nd Ave, Seattle",
    "timezone": "America/Los_Angeles",
    "tour_at": "2023-03-18T16:30:00.000Z",
    "tour_until": "2023-03-18T17:00:00.000Z",
    "survey_results": [
        {
            "key": "outcome",
            "answer": "Successful tour",
            "question": "Tour outcome"
        },
        {
            "key": "does_unit_show_well",
            "answer": "yes",
            "question": "Does the unit show well? If not, what can be done to make it show better?"
        }
    ],
    "prospects_count": 2,
    "prospects": [
        {
            "id": 90,
            "first_name": "Ottis",
            "last_name": "Feest",
            "phone": "+201255563527",
            "email": "ukbkadhj@showdigs.testfake",
            "likely_to_apply": "Maybe",
            "inquiry_id": 456
        },
        {
            "id": 91,
            "first_name": "Shanon",
            "last_name": "Klocko",
            "phone": "+201255564049",
            "email": "ouhwfiop@showdigs.testfake",
            "likely_to_apply": "Yes",
            "inquiry_id": 789
        }
    ],
    "charge": 45,
    "appfolio_listing_uuid": "8e9b8527-48a7-4e49-9c98-7d45203da399",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "Multiple prospects completed a tour of 1473 22nd Ave, Seattle: https://app.showdigs.com/tours/59"
}

event_type
The webhook event.

tour_type
The type of tour that was scheduled.
Possible values: self_showing, open_house, agent

tour_id
The Showdigs identifier for the tour. This will be consistent for a single tour across the tour-related webhooks.

outcome
The outcome of the tour. Keep in mind that tour_cancelled is a different webhook.
Possible values: completed, no_show, technical_issue (typically refers to an access issue that prevented the tour from occurring)

unit_internal_id
The PMS identifier for the property.

address
The address of the property being toured.

timezone
The timezone the property is in.

tour_at
The scheduled start time for the tour.

tour_until
The scheduled end time for the tour.

survey_results
An array of the questions asked to the agent and their responses about the tour and property.

prospects_count
The number of prospects that attended the tour.

prospects
An array of the prospects that attended the tour. This will include each prospect's id, name, phone, email, original inquiry identifier, and the agent's thoughts regarding the likelihood of the prospect to apply.

charge
This is the amount that was charged to complete the tour.
Value will be numeric, and will not have any "money" formatting applied.

appfolio_listing_uuid
The AppFolio listing identifier.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened

Tour Cancelled

When a tour is cancelled.

{
    "event_type": "tour_cancelled",
    "tour_type": "agent",
    "tour_id": 59,
    "unit_internal_id": "my_int_id",
    "address": "1473 22nd Ave, Seattle",
    "timezone": "America/Los_Angeles",
    "tour_at": "2023-03-18T16:30:00.000Z",
    "tour_until": "2023-03-18T17:00:00.000Z",
    "prospects": [
        {
            "id": 90,
            "first_name": "Ottis",
            "last_name": "Feest",
            "phone": "+201255563527",
            "email": "ukbkadhj@showdigs.testfake",
            "inquiry_id": 456
        }
    ],
    "appfolio_listing_uuid": "8e9b8527-48a7-4e49-9c98-7d45203da399",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "Ottis Feest cancelled a tour 1473 22nd Ave, Seattle: https://app.showdigs.com/tours/59"
}

event_type
The webhook event.

tour_type
The type of tour that was scheduled.
Possible values: self_showing, open_house, agent

tour_id
The Showdigs identifier for the tour. This will be consistent for a single tour across the tour-related webhooks.

unit_internal_id
The PMS identifier for the property.

address
The address of the property being toured.

timezone
The timezone the property is in.

tour_at
The scheduled start time for the tour.

tour_until
The scheduled end time for the tour.

prospects
An array of the prospects that were scheduled to attend the tour. This will include each prospect's id, name, phone, email, and their original inquiry identifier.

appfolio_listing_uuid
The AppFolio listing identifier.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened

Condition report completed

When a condition report is completed.

{
    "event_type": "completed_condition_report",
    "condition_report_id": 123,
    "address": "506 E Howell St, Seattle - E-308",
    "timezone": "America/Los_Angeles",
    "report_url": "sd.test/9pdYyM",
    "cost": "20",
    "condition_report_type": "move_in_out",
    "inspected_at": "2023-03-18T17:00:00.000Z",
    "uuid": "1e840593-2e20-47f1-b7bc-65e96fe4740d",
    "message": "A condition report was completed for 506 E Howell St, Seattle - E-308"
}

event_type
The webhook event.

condition_report_id
The Shodigs identifier for the condition report.

address
The address of the property that the report was completed for.

timezone
The timezone the property is in.

report_url
The url of the completed condition report.

cost This is the amount that was charged to complete the condition report.
Value will be numeric, and will not have any "money" formatting applied.

condition_report_type
The type of condition report that was completed.
Possible values: periodic, move_in_out, vacancy_check

inspected_at
The date and time the condition report was completed at.

uuid
The Showdigs identifier, which can be used in the /listings:{uuid} API call.

message
A human readable message to describe what happened

Scheduling Widget

You can load Showdigs scheduling widget inside your listing page.

Showdigs Scheduling Widget

Contact Showdigs support and provide a list of domains you're expecting to load the widget from.

Once feature is enabled for your account, you can embed the widget as an iframe in your site.


<iframe
    src="https://lead.showdigs.com/embed/ACCOUNT_ID/INTERNAL_UNIT_ID?name=John Doe&phone=%2b15555551234"
    width="100%"
    height="600px"
    style="border:none;">
</iframe>