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
  }
}
ParameterDescription
nameListing Name (string)
usernameListing sharplaunch subdomain, i.e. demo.sharplaunch.com (string)
external_urlExternal URL for the listing, i.e. https://www.mywebsite.com/listing (string)
statusListing status, expected values:
0 - closed
1 - active
2 - escrow
3 - draft (number)
optionsListing options (object)
sectionsListing 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"
    }
}
ParameterDescription
slugPSE slug (string)
building_typeListing type, expected values:
office, retail, industrial, multifamily, hospitality, land, mixed, medical, flex, special, farmranch, other (string)
additional_building_typesarray of building type values (array)
building_total_sqfListing total suface (number)
building_total_unitSurface unit, expected values:
sqf, sqm, acres (string)
transactionTransaction type, expected values:
sale, lease, lease-sale, sublease (string)
sale_priceListing sale price (number)
sale_currencyCurrency, ISO 4217 currency code, i.e. USD (string)
cap_rateCAP Rate (number)
unitsNumber of units (number)
yearbuiltYear 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.

KeyValue
officeOffice
retailRetail
industrialIndustrial
multifamilyMultifamily
hospitalityHospitality
landLand
mixedMixed-use
medicalMedical
self-storageSelf Storage
otherOther
specialSpecial
flexFlex
farmranchFarm & Ranch
residentialResidential

Unit type values

KeyValue
flexFlex
hospitalityHospitality
industrialIndustrial
labLab
landLand
medicalMedical
multifamilyMultifamily
officeOffice
retailRetail
restaurantRestaurant
residentialResidential
specialSpecial Purpose

Website configuration

ParameterDescription
templateWebsite template, expected values:
sharplaunch_1, sharplaunch_2, sharplaunch_3, sharplaunch_5, sharplaunch_8 (string)
colorAccent color, hex value, i.e. 095fe0 (string)
color_rgbAccent color, rgb value, i.e. 35,27,78 (string)
leads_emailEmail address to receive the contact form submissions, can take multiple emails separated by comma (string)
meta_titleMeta title (string)
meta_descriptionMeta description (string)
ganalytics_idGoogle Analytics ID,
UA-XXXXXXX-XX (string)
user_registrationDisplay "member area" button in the main menu (bool)
member_area_labelMain 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": ""
    }
}
ParameterDescription
titleHero Heading (string)
subtitleHero Subheading (string)
variationHero 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)
ctaCTA button text (string)
cta_actionCTA button action, expected values:
modal - Opens contact form in a modal
external - External Link (string)
cta_urlCTA 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
    }
}
ParameterDescription
titleListing Name (string)
overviewListing description (string)
menu_titleMain menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
addressStreet address (string)
cityCity (string)
stateState (for US states the two letter format) (string)
countryCountry (string)
submarketSubmarket/Neighborhood (string)
hero_imageProperty primary image URL (object)
order_idOrder 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
    }
}
ParameterDescription
sub_titleSection subtitle (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
itemsProperty features (array)
order_idOrder 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
    }
}
ParameterDescription
sub_titleSection subtitle (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
itemsProperty features (array) of objects (see format above)
order_idOrder 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
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
latLatitude (float)
lngLongitude (float)
zoomMap Zoom (number)
metaCustom data (object)
order_idOrder 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
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
membersMember IDs (array)
order_idOrder of section within template (number)

This section will render an image gallery.

{
    "gallery": {
        "menu_title": "Photo Gallery",
        "items": [
            {
                "url": "https://placehold.it/600x400.jpg"
            }
        ],
        "order_id": 4
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
itemsGallery images (array)
order_idOrder 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
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
view_typeView type, expected values: list, card (string)
itemsAvailabities (array)
order_idOrder of section within template (number)

Space Item object reference

ParameterDescription
transactionTransaction type, expected values:
sale, lease, lease-sale, sublease (string)
nameAvailability name (string)
urlFloor plan URL (string)
typeAvailability type, expected values:
office, retail, industrial, multifamily, hospitality, land, mixed, medical, flex, special, farmranch, other (string)
unit_noUnit Number (string/number)
floor_noFloor Number (string/number)
surfaceSurface (number)
surface_unitSurface unit, expected values:
sqf, sqm, acres (string)
rentRent value (number)
rent_typeRent type expected values:
0 - Amt/SF/Year
1 - Amt/SF/Month
2 - Amt/Year
3 - Amt/Month (number)
metaCustom 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
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
view_typeView type, expected values: list, card (string)
itemsDocuments (array)
order_idOrder 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
    }
}
ParameterDescription
titleSection title (string)
menu_titleSection main menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
file.urlFloor plan image URL (string)
order_idOrder 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
    }
}
ParameterDescription
menu_titleSection main menu button label (string)
sub_titleSection sub title (string)
menu_slugSection html anchor or slug for multipage templates (string)
itemsSlider items (array)
items[].file.urlSlider item image URL (string)
order_idOrder 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
    }
}
ParameterDescription
titleListing Name (string)
menu_titleMain menu button label (string)
menu_slugSection html anchor or slug for multipage templates (string)
addressComplete address (string)
phonePhone (string)
faxFax (string)
order_idOrder 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
    }
}
ParameterDescription
idLead ID (number)
emailLead email (string)
user_idUser ID (number)
first_nameFirst Name (string)
last_nameLast Name (string)
titleJob title (string)
companyCompany name (string)
phonePhone no (string)
phone_2Secondary phone no (string)
funnelLead source (string)
createdCreation date ISO 8601 (date)
roleCompany role, expected values:
broker - Broker
principal - Principal/Investor
lender - Lender
(string)
user_metaUser'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",
}
ParameterDescription
idMember ID (number)
emailMember email (string)
first_nameFirst Name (string)
last_nameLast Name (string)
titleJob title (string)
companyCompany name (string)
phonePhone no (string)
phone_2Secondary phone no (string)
locationMember 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"
}
ParameterDescription
idActivity ID (number)
emailLead email (string)
nameName (string)
actionAction name (string)
view available actions
createdCreation date ISO 8601 (date)
website_idWebsite ID (number)
ip_addressIP addres (string)
user_idUser ID (number)
document_idDocument ID (number)
document_nameDocument name (string)

Available actions

ValueDescription
signupUser signed up
loginUser logged in
visitUser visited website
viewUser viewed/downloaded file
agreed_caUser signed confidentialy agreement
openUser opened an email campaign
clickUser clicked an email campaign
unsubscribeUser 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

ParameterDescription
IDThe 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

ParameterDescription
IDThe 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.

ParameterDescription
website_idList the leads linked to a specific website (number|array)
created_at_minList leads registered after a specific date (ISO 8601) (date)
created_at_maxList leads registered before a specific date (ISO 8601) (date)
pagePagination 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.

ParameterDescription
website_idList activities for a specific website (number|array)
created_at_minList activities for after a specific date (ISO 8601) (date)
created_at_maxList activities for before a specific date (ISO 8601) (date)
actionList activities of a specific action type (string|array)
view available actions
pagePagination 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.

Last Updated:
Contributors: gabor-sl, Stefan Olaru, Carlos Jimenez Fabrgat