Introduction
Welcome to the Sharplaunch API! You can use our API to access Sharplaunch API endpoints, which can get information on listings in our database.
Authentication
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl "https://app.sharplaunch.com/apiv2"
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
Make sure to replace
yourapikey
with your API key.
SharpLaunch uses API keys to allow access to the API. To obtain an API key please contact us.
SharpLaunch expects for the API key to be included in all API requests to the server in a header that looks like the following:
X-APIKEY: yourapikey
Listings
# Sample listing object
{
"name": "Property name",
"username": "demorocks"
"external_url": "https://www.mywebsite.com/listing",
"status": 1,
"options": {
# this contains listing options
},
"sections": {
# this contains listing sections
}
}
Parameter | Description |
---|---|
name | Listing Name (string) |
username | Listing sharplaunch subdomain, i.e. demo.sharplaunch.com (string) |
external_url | External URL for the listing, i.e. https://www.mywebsite.com/listing (string) |
status | Listing status, expected values: 0 - closed 1 - active 2 - escrow 3 - draft (number) |
options | Listing options (object) |
sections | Listing sections (object) |
Options
Listing properties
# Sample listing options JSON
{
"options": {
"slug": "my-listing",
"building_type": "office",
"additional_building_types": ["mixed", "retail"],
"building_total_unit": "sqf",
"building_total_sqf": 19277,
"transaction": "sale",
"sale_price": 4000000,
"currency": "USD",
"cap_rate": 12,
"units": 5,
"yearbuilt": 2007,
"color": "231b4e",
"color_rgb": "35,27,78",
"leads_email": "my@email.com",
"template": "sharplaunch_1",
"meta_title": "Rock Quarry Road 1",
"meta_description": "The meta description of the rock quary road listing",
"ganalytics_id": "UA-XXXXXXX-XX",
"user_registration": 1,
"member_area_label": "Member Area"
}
}
Parameter | Description |
---|---|
slug | PSE slug (string) |
building_type | Listing type, expected values: office, retail, industrial, multifamily, hospitality, land, mixed, medical, flex, special, farmranch, other (string) |
additional_building_types | array of building type values (array) |
building_total_sqf | Listing total suface (number) |
building_total_unit | Surface unit, expected values: sqf, sqm, acres (string) |
transaction | Transaction type, expected values: sale, lease, lease-sale, sublease (string) |
sale_price | Listing sale price (number) |
sale_currency | Currency, ISO 4217 currency code, i.e. USD (string) |
cap_rate | CAP Rate (number) |
units | Number of units (number) |
yearbuilt | Year built, i.e. 2020 (number) |
Building type values
Those are the expected values for the building_type
and additional_building_types
options. Use the key value in the API.
Key | Value |
---|---|
office | Office |
retail | Retail |
industrial | Industrial |
multifamily | Multifamily |
hospitality | Hospitality |
land | Land |
mixed | Mixed-use |
medical | Medical |
self-storage | Self Storage |
other | Other |
special | Special |
flex | Flex |
farmranch | Farm & Ranch |
residential | Residential |
Unit type values
Key | Value |
---|---|
flex | Flex |
hospitality | Hospitality |
industrial | Industrial |
lab | Lab |
land | Land |
medical | Medical |
multifamily | Multifamily |
office | Office |
retail | Retail |
restaurant | Restaurant |
residential | Residential |
special | Special Purpose |
Website configuration
Parameter | Description |
---|---|
template | Website template, expected values: sharplaunch_1, sharplaunch_2, sharplaunch_3, sharplaunch_5, sharplaunch_8 (string) |
color | Accent color, hex value, i.e. 095fe0 (string) |
color_rgb | Accent color, rgb value, i.e. 35,27,78 (string) |
leads_email | Email address to receive the contact form submissions, can take multiple emails separated by comma (string) |
meta_title | Meta title (string) |
meta_description | Meta description (string) |
ganalytics_id | Google Analytics ID, UA-XXXXXXX-XX (string) |
user_registration | Display "member area" button in the main menu (bool) |
member_area_label | Main menu "member area" button text (string) |
Sections
Our templates are built out of sections, below are listed the available sections.
Hero
This is the primary section of the template,
{
"hero": {
"title": "Greame House",
"subtitle": " Derby Square, Liverpool, L2 7XS ",
"variation": "bottom-overlay",
"cta": "Request A Callback",
"cta_action": "modal",
"cta_url": ""
}
}
Parameter | Description |
---|---|
title | Hero Heading (string) |
subtitle | Hero Subheading (string) |
variation | Hero Design Variation, expected values: bottom-overlay - bottom dark gradient image filter center-overlay - center dark gradient image filter left-overlay - left dark diagonal image filter left-normal - left aligned, no filter (string) |
cta | CTA button text (string) |
cta_action | CTA button action, expected values: modal - Opens contact form in a modal external - External Link (string) |
cta_url | CTA external URL (string) |
Building
This section contains info about your listing & contact info
{
"building": {
"title": "My building name",
"overview": "<p>Long description of the building, can be HTML code</p>",
"menu_title": "Building",
"address": "3369 Lenox Rd NE",
"city": "Lawrenceville",
"state": "GA",
"country": "United States",
"submarket": "",
"hero_image": {
"url": "https://placehold.it/1900x1000.jpg"
},
"order_id": 0
}
}
Parameter | Description |
---|---|
title | Listing Name (string) |
overview | Listing description (string) |
menu_title | Main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
address | Street address (string) |
city | City (string) |
state | State (for US states the two letter format) (string) |
country | Country (string) |
submarket | Submarket/Neighborhood (string) |
hero_image | Property primary image URL (object) |
order_id | Order of section within template (number) |
Amenities
This section will render a list of property features
{
"highlights": {
"sub_title": "Amenities",
"items": [
"Ample parking: Say goodbye to the stress of finding parking with the large, on-site parking lot available to tenants and guests.",
"Outdoor spaces: Take a break and enjoy the fresh air in the outdoor courtyard or on the rooftop terrace with scenic views of the surrounding area."
],
"menu_title": "Amenities",
"menu_slug": "amenities",
"order_id": 1
}
}
Parameter | Description |
---|---|
sub_title | Section subtitle (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
items | Property features (array) |
order_id | Order of section within template (number) |
Highlights
This section will render a list of property features in a label-value format
{
"propertyinfo": {
"sub_title": "Key Highlights",
"items": [
{
"key": "Property Type",
"value": "Retail - Street Retail"
}
],
"menu_title": "Summary",
"menu_slug": "propertyinfo",
"order_id": 1
}
}
Parameter | Description |
---|---|
sub_title | Section subtitle (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
items | Property features (array) of objects (see format above) |
order_id | Order of section within template (number) |
Location
This section will render the listing location on a Google Map
{
"location": {
"title": "Location",
"menu_title": "Location",
"menu_slug": "location",
"lat": 32.8049843,
"lng": -96.814248,
"zoom": 15,
"meta": {
"highlights": [
{
"icon": "marker",
"name": "Location",
"description": "Information about location"
}
]
},
"order": 2
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
lat | Latitude (float) |
lng | Longitude (float) |
zoom | Map Zoom (number) |
meta | Custom data (object) |
order_id | Order of section within template (number) |
Team
This section will render a list of team members / brokers.
{
"team": {
"title": "Our Team",
"menu_title": "Our Team",
"menu_slug": "team",
"members": [1, 2, 9],
"order_id": 3
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
members | Member IDs (array) |
order_id | Order of section within template (number) |
Gallery
This section will render an image gallery.
{
"gallery": {
"menu_title": "Photo Gallery",
"items": [
{
"url": "https://placehold.it/600x400.jpg"
}
],
"order_id": 4
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
items | Gallery images (array) |
order_id | Order of section within template (number) |
Availabilities
This section will render the list of availabilites
{
"downloads": {
"menu_title": "Available Space",
"view_type": "list",
"menu_slug": "availabilities",
"overview": "<p>Long description, can be HTML code</p>",
"items": [
{
"transaction": "lease",
"name": "Partial MG",
"url": "https://placehold.it/600x400.pdf",
"type": "office",
"unit_no": "7-C",
"floor_no": "1",
"surface": 1500,
"surface_unit": "sqft",
"rent": 27.6,
"rent_type": 0,
"meta": {
"service": 0.0,
"insurance": 0.0,
"epc_rating": "E"
}
}
],
"order_id": 5
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
view_type | View type, expected values: list, card (string) |
items | Availabities (array) |
order_id | Order of section within template (number) |
Space Item object reference
Parameter | Description |
---|---|
transaction | Transaction type, expected values: sale, lease, lease-sale, sublease (string) |
name | Availability name (string) |
url | Floor plan URL (string) |
type | Availability type, expected values: office, retail, industrial, multifamily, hospitality, land, mixed, medical, flex, special, farmranch, other (string) |
unit_no | Unit Number (string/number) |
floor_no | Floor Number (string/number) |
surface | Surface (number) |
surface_unit | Surface unit, expected values: sqf, sqm, acres (string) |
rent | Rent value (number) |
rent_type | Rent type expected values: 0 - Amt/SF/Year 1 - Amt/SF/Month 2 - Amt/Year 3 - Amt/Month (number) |
meta | Custom data (object) |
Downloads
This section will render the list of documents available for download (public)
{
"files": {
"menu_title": "Documents",
"view_type": "list",
"items": [
{
"name": "Brochure",
"url": "https://placehold.it/600x400.pdf"
}
],
"order_id": 6
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
view_type | View type, expected values: list, card (string) |
items | Documents (array) |
order_id | Order of section within template (number) |
Siteplan
This section will render a siteplan image
{
"siteplan": {
"title": "Siteplan",
"menu_title": "Siteplan",
"file": {
"url": "https://placehold.it/600x400.jpg"
},
"order_id": 14
}
}
Parameter | Description |
---|---|
title | Section title (string) |
menu_title | Section main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
file.url | Floor plan image URL (string) |
order_id | Order of section within template (number) |
Slider
This section will render a slider with images
{
"slider": {
"menu_title": "Siteplan",
"menu_slug": "siteplan",
"sub_title": "Sub Title",
"description": "Description",
"items": [
{
"name": "Name",
"text": "Description",
"file": {
"url": "https://placehold.it/600x400.jpg"
}
}
],
"order_id": 14
}
}
Parameter | Description |
---|---|
menu_title | Section main menu button label (string) |
sub_title | Section sub title (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
items | Slider items (array) |
items[].file.url | Slider item image URL (string) |
order_id | Order of section within template (number) |
Contact
This section will render the contact the listing contact info & contact form
{
"contact": {
"menu_title": "Contact",
"menu_slug": "contact",
"address": "3369 Lenox Rd NE, Suite 99\r\nRaleigh, NC 27605",
"phone": "919 111 1110",
"fax": "919 222 4488",
"order_id": 12
}
}
Parameter | Description |
---|---|
title | Listing Name (string) |
menu_title | Main menu button label (string) |
menu_slug | Section html anchor or slug for multipage templates (string) |
address | Complete address (string) |
phone | Phone (string) |
fax | Fax (string) |
order_id | Order of section within template (number) |
Leads
# Sample lead object
{
"id": "1234",
"email": "john@doe.com",
"user_id": "4321",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"phone": "07432737123",
"phone_2": null,
"company": "SpaceY",
"funnel": "contactform",
"created": "2021-12-14T11:45:08-05:00",
"role": null,
"address": "1 Infinite Loop",
"city": "Dallas",
"state": "TX",
"zip": "70822"
"user_meta": {
"address": "1 Infinite Loop", // will be deprecated
"city": "Dallas", // will be deprecated
"state": "TX", // will be deprecated
"zip": "70822" // will be deprecated
}
}
Parameter | Description |
---|---|
id | Lead ID (number) |
Lead email (string) | |
user_id | User ID (number) |
first_name | First Name (string) |
last_name | Last Name (string) |
title | Job title (string) |
company | Company name (string) |
phone | Phone no (string) |
phone_2 | Secondary phone no (string) |
funnel | Lead source (string) |
created | Creation date ISO 8601 (date) |
role | Company role, expected values: broker - Broker principal - Principal/Investor lender - Lender (string) |
user_meta | User's custom data fields (object) |
Members
# Sample Member object
{
"id": "1234",
"email": "john@doe.com",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"phone": "07432737123",
"phone_2": null,
"company": "SpaceY",
"location": "New York",
}
Parameter | Description |
---|---|
id | Member ID (number) |
Member email (string) | |
first_name | First Name (string) |
last_name | Last Name (string) |
title | Job title (string) |
company | Company name (string) |
phone | Phone no (string) |
phone_2 | Secondary phone no (string) |
location | Member location (string) |
Activity
# Sample activity object
{
"id": "264636",
"email": "john@doe.com",
"name": "John Doe",
"action": "login",
"created": "2021-12-14T11:45:08-05:00",
"website_id": "3266",
"ip_address": null,
"user_id": "5942",
"document_id": "27762",
"document_name": "Confidentiality Agreement"
}
Parameter | Description |
---|---|
id | Activity ID (number) |
Lead email (string) | |
name | Name (string) |
action | Action name (string) view available actions |
created | Creation date ISO 8601 (date) |
website_id | Website ID (number) |
ip_address | IP addres (string) |
user_id | User ID (number) |
document_id | Document ID (number) |
document_name | Document name (string) |
Available actions
Value | Description |
---|---|
signup | User signed up |
login | User logged in |
visit | User visited website |
view | User viewed/downloaded file |
agreed_ca | User signed confidentialy agreement |
open | User opened an email campaign |
click | User clicked an email campaign |
unsubscribe | User unsubscribed from email campaigns |
API Calls
List Properties
Get a list of all properties
curl --location --request GET 'https://app.sharplaunch.com/apiv2/websites' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
HTTP Request
GET https://app.sharplaunch.com/apiv2/websites
The above command returns JSON structured like this:
[
{
"domain": "property.sharplaunch.com",
"name": "Property Name",
"status": 1,
"archived": 0,
"id": 00000
}
]
Get Single Listing
curl --location --request GET 'https://app.sharplaunch.com/apiv2/website/ID' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
HTTP Request
GET https://app.sharplaunch.com/apiv2/website/ID
Parameter | Description |
---|---|
ID | The ID of the listing to retrieve |
The above command returns JSON structured like this:
{
"domain": "property.sharplaunch.com",
"name": "Property Name",
"status": 1,
"archived": 0,
"id": 00000,
"options": {
# this contains listing options
},
"sections": {
# this contains listing sections
}
}
Create Listing
curl --location --request POST 'https://app.sharplaunch.com/apiv2/website' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Property Name",
"status": 1,
"options": {...},
"sections": {...}
}'
HTTP Request
POST https://app.sharplaunch.com/apiv2/website
The above command returns JSON structured like this:
{
"domain": "property.sharplaunch.com",
"name": "Property Name",
"created_by": -1,
"status": 1,
"archived": 0,
"id": 00000
}
Update Listing
curl --location --request POST 'https://app.sharplaunch.com/apiv2/website/ID' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Property Name",
"status": 1,
"options": {...},
"sections": {...}
}'
HTTP Request
POST https://app.sharplaunch.com/apiv2/website/ID
Parameter | Description |
---|---|
ID | The ID of the listing to update |
The above command returns JSON structured like this:
{
"domain": "property.sharplaunch.com",
"name": "Property Name",
"created_by": -1,
"status": 1,
"archived": 0,
"id": 00000
}
List Leads
Get a list of leads. See more details about the Lead Object structure.
curl --location --request GET 'https://app.sharplaunch.com/apiv2/leads' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
HTTP Request
GET https://app.sharplaunch.com/apiv2/leads
Filters and pagination
Use querystring parameters to narrow down and paginate the results.
Parameter | Description |
---|---|
website_id | List the leads linked to a specific website (number|array) |
created_at_min | List leads registered after a specific date (ISO 8601) (date) |
created_at_max | List leads registered before a specific date (ISO 8601) (date) |
page | Pagination page number (number) |
Sample HTTP Request with query parameters
GET https://app.sharplaunch.com/apiv2/leads?website_id=1&page=2
The above command returns JSON structured like this:
{
"items": [
# array of leads
],
"pagination": {
"total_items": 24,
"current_page": 1,
"has_next_page": false,
"page_count": 1
}
}
List Activity
Get a list of lead activities. See more details about the Activity Object structure.
curl --location --request GET 'https://app.sharplaunch.com/apiv2/activity' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
HTTP Request
GET https://app.sharplaunch.com/apiv2/activity
Filters and pagination
Use querystring parameters to narrow down and paginate the results.
Parameter | Description |
---|---|
website_id | List activities for a specific website (number|array) |
created_at_min | List activities for after a specific date (ISO 8601) (date) |
created_at_max | List activities for before a specific date (ISO 8601) (date) |
action | List activities of a specific action type (string|array) view available actions |
page | Pagination page number (number) |
Sample HTTP Request with query parameters
GET https://app.sharplaunch.com/apiv2/activity?website_id=1&page=2
The above command returns JSON structured like this:
{
"items": [
# array of activities
],
"pagination": {
"total_items": 24,
"current_page": 1,
"has_next_page": false,
"page_count": 1
}
}
List Members
Get a list of members. See more details about the Member Object structure.
curl --location --request GET 'https://app.sharplaunch.com/apiv2/members' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
HTTP Request
GET https://app.sharplaunch.com/apiv2/members
Filters and pagination
- No filters/pagination.
The above command returns JSON structured like this:
[
{
"id": "3045",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@yourcompany.com",
"company": "Your Company",
"title": "Vice President",
"phone": "123.456.7890",
"phone_2": "",
"location": "New York"
}
]
Create/Update Members
Batch create/update endpoint for members. See more details about the Member Object structure.
Existing members are updated using their email
field as an ID.
curl --location --request POST 'https://app.sharplaunch.com/apiv2/member_batch' \
--header 'X-APIKEY: yourapikey' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@yourcompany.com",
"company": "Your Company",
"title": "Vice President",
"phone": "123.456.7890",
"phone_2": "",
"location": "New York"
}
]'
HTTP Request
POST https://app.sharplaunch.com/apiv2/member_batch
The above command returns JSON structured like this:
{
"success": "1",
"output": {
"john.doe@yourcompany.com": "4395"
}
}
where
4395
is the ID of the updated/created member.