Higharc API
Interested in using the Higharc API? Reach out to our Customer Success or Sales teams to inquire about enabling it for your account.
Developer Portal
Once the API is enabled on your account, you’ll have a “Developer Portal” menu item in your account’s Dashboard —
From here, you can create API tokens and test our endpoints using the built-in interactive documentation. Available endpoints are all documented and kept up-to-date here.
Concepts
Studio Documents
Studio documents are stored in a .home file format and can be loaded and edited in the Higharc product called Studio. These documents model a home, are configured via their attached options, and can be used to export construction documents.
Master Plans
A Master Plan is a published Studio file and it lives in your Plan Library. This Master Plan drives the base configuration for a model.
Locations
Locations can be Divisions, Communities or Phases and are used to organize geographic data and lots lists and create a hierarchy that defines inheritance of certain properties.
Location Plans
A Location Plan is an instance of a Master Plan at a particular Location.
Lots
Every Location can have a list of lots which can also correspond to a Lot map. Those lots can be made available to particular Location Plans. These Lots can have prices (premiums), garage handing and be designated as Model or Spec.
Lot Location Plans
This is the intersection of a Location Plan and Lot, allowing for additional configuration for a particular model on a particular lot.
Options
Options are choices that are available for a home. At Higharc we organize them into Option Sets which are how these Options are grouped for selection. One example of an Option Set is a garage that may be sold in three different configurations, from which one can be chosen.
Home Plans
A Home Plan is an instance of a Location Plan that can be configured by a homebuyer.
A Home Plan can have one or more Contracts, each representing a prospective or closed buyer (also known in some systems as a quote/priceout). On a standard lot there's typically one contract per Home Plan; on spec/model lots, a builder can pre-configure a single Home Plan and let multiple prospective buyers each open their own contract against it before one closes. Customer, sales agent, and pricing-override data live on the Contract, not the Home Plan — see the Webhooks guide for the contracts payload shape.
Option Templates
Option Templates allow for the control of pricing, base/default, and availability of options.
Plan Inheritance
Option data originates at the Master Plan level and flows downstream through a hierarchy of plans—Location Plans, Lot Plans, and finally Home Plans. Each layer inherits data from the one before it, but can also override it.
Master Plan → Location Plan → Lot Plan → Home Plan
Considerations
Note: Higharc previously only supported one Location type, “Community”. Because of this you may see legacy properties like communityId where the value is a Location ID or communityPlanId where the value is a Location Plan ID. This work is in progress and we apologize for any confusion it creates in the meantime.
Authenticating
An Authorization header with a valid JWT token is required for all requests. To get a token, follow the instructions below.
Retrieving a JWT token
To get a token, send a request to the following endpoint.
Endpoint |
|
This request should contain an Authorization header containing your Base64-encoded Client App ID and secret, prefixed with "Basic". Example:
Authorization: Basic eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
To properly encode your Client App ID and secret, separate the two keys with a colon, then Base64-encode the result. A pseudo-code example:
// Pass the "header" string to the Authorization header in your POST request
var encodedToken = base64(clientAppId + ":" + clientAppSecret);
var header = "Basic " + encodedToken;
The result of this POST request will be a token in an RFC 6749-compatible format.
Using the JWT token
Pass your token along to all authenticated requests in the Authorization header, prefixed with "Bearer". Example:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Basic Setup
This section will go through the basic setup of plans, options and lots. There are some important places where we can attach External IDs to Higharc objects, allowing us to map them to external systems.
Master Plans
After they have been created, add External IDs to Master Plans. This can be done by going to Plan Library > Edit Plan Details in Higharc.
We can list all master plans with the following endpoint.
Endpoint |
|
Tip: Use this response to map each internal id to its corresponding externalId, connecting Higharc’s data with your system.
Locations
To manually add External IDs to Locations you can go to Locations > Edit (Division|Community|Phase) Details in Higharc.
Alternatively we can handle this during creation via the API.
Endpoint |
|
Include an
externalIdproperty in the request bodyThe
masterPlanIdsshould include the list of plans offered at this locationIf setting up a location hierarchy, use
parentIdUse
allowHomePlansto control whether home plans are permitted at this location. Defaults totruefor communities, phases, and multi-units;falseotherwise. The API will reject attempts to disable home plans at a location where they already exist.
We can list all locations with the following endpoint.
Endpoint |
|
Tip: Use this response to map each internal id to its corresponding externalId, connecting Higharc’s data with your system.
Location Plans
To manually add External IDs to Location Plans you can go to Locations > Location Plans > Edit Plan Details in Higharc.
Alternatively we can handle this during creation via the API.
Endpoint |
|
Include an
externalIdproperty in the request bodyThe
masterPlanIdfrom which this plan is based is requiredIf setting up a location hierarchy, use
parentId
We can list all location plans with the following endpoint.
Endpoint |
|
Tip: Use this response to map each internal id to its corresponding externalId, connecting Higharc’s data with your system.
Lots
We can manually create lots by navigating to Locations > Lots, adding them one at a time or using the CSV upload tool. Using either method, or when dealing with existing lots, make sure to provide External IDs.
Alternatively we can create Lots via the API.
Endpoint |
|
Include an
externalIdproperty in the request bodyThe
locationIdto which this lot belongs is required
We can list all lots with the following endpoint.
Endpoint |
|
This endpoint can be filtered by locationIds and locationPlanIds, and is paginated.
Tip: Use this response to map each internal id to its corresponding externalId, connecting Higharc’s data with your system.
Options
Option and Option Set creation occurs in Studio. They can be connected to data in your system with the following properties.
Option Sets | Options |
|
|
Home Plans
We can manually create home plans by navigating to Locations > Add > Home Plan and provide an External ID at the time of creation.
Alternatively we can create Home Plans via the API.
Endpoint |
|
Include an
externalIdproperty in the request bodyThe Location Plan for this home must be identified with
communityPlanId
We can list all the home plans in a location with the following endpoint.
Endpoint |
|
Tip: Use this response to map each internal id to its corresponding externalId, connecting Higharc’s data with your system.
Rate Limits
To ensure service stability for all users of the Higharc platform, the API enforces rate limits per client app using a points-based window (default: 100 requests per 60 seconds).
To monitor usage, check each API response for these headers:
Header | Description |
| The maximum number of requests allowed in the current window |
| The number of requests remaining in the current window |
| Returned with a |
If the limit is exceeded, the API returns HTTP 429 Too Many Requests. When X-RateLimit-Remaining is getting low, reduce request frequency or implement backoff logic.
Workflows
Note: Many of the examples below use partial request or response data.
Setting Plan Option Data
We can control pricing, base/default, and availability of options at the Master Plan, Location Plan or Lot Location Plan using the Option Templates API.
Endpoint |
|
Targeting a Plan
We can select a particular plan by providing one of the following three values.
{
"masterPlanId": "string",
"communityPlanId": "string",
"lotCommunityPlanId": "string",
}
Targeting an Option
We can then author updates in bulk to particular Option Sets or Options.
{
"optionSets": [
{
"identifier": {
"builderOptionSetCode": "string",
},
// Option set properties
},
// Additional option sets
],
}{
"options": [
{
"identifier": {
"builderOptionCode": "string",
},
// Option properties
},
// Additional options
],
}{
"optionSets": [
{
"identifier": {
"builderOptionSetCode": "string",
},
"options": [
{
"identifier": {
"builderOptionCode": "string",
},
},
],
}
],
}If the top level
optionSetproperty is provided, the top leveloptionsproperty will be ignored.Both
optionSetsandoptionshave a required item propertyactionwhose value can be one of"upsert"or"delete".
Setting Default/Base Options
We can set the default value for an option set in two different ways
{
"options": [
{
"identifier": {
"builderOptionCode": "string",
},
"setAsDefault": true
}
],
}{
"optionSets": [
{
"identifier": {
"docOptionSetId": "optionSet_HigharcOptionSetId",
},
"defaultValue": "option_HigharcOptionId"
}
],
}
Targeting an Option Set via its Options
Many builders do not have an Option Set concept but still want to control Option Set properties via the API.
First we need to identify the Higharc Option Set ID for the option in question. One way can do this by using the Master Plan Options API.
Endpoint |
|
{
"optionSets": [
{
"docOptionSetId": "string",
"builderOptionSetCode": "string",
"options": [
{
"builderOptionCode": "string",
}
],
}
],
}Tip: Use this response to map builderOptionCode to docOptionSetId connecting Higharc’s data with your system.
We can then make requests in the format shown in the previous section.
Making an Option Operational
Operational options are hidden from home buyers, but still included in Home Plan Options exports. This is controlled by an option set property, salesCategory.
{
"optionSets": [
{
"identifier": {
"builderOptionSetCode": "string",
},
"salesCategory": "OPERATIONS"
}
],
}Clearing an Option Override
We can clear overrides in one of two ways. Either by removing all overrides at once for an option or option set, or removing the override on a single property.
{
"options": [
{
"identifier": {
"builderOptionCode": "string",
},
"action": "delete"
}
],
}{
"options": [
{
"identifier": {
"builderOptionCode": "string",
},
"price": null,
// Other overridden properties can still remain
}
],
}
Updating the Garage Handing on a Lot
If we wanted to set the garage handing for any home built on the lot, we can do so at the following endpoint.
Endpoint |
|
{
"lot": {
"garageHandingDirection": "left",
},
}If we need to be more targeted, we use the Lot Location Plan to mirror a home plan on a lot using the mirror option type.
Endpoint |
|
{
"lotCommunityPlanId": "string",
"optionSets": [
{
"identifier": {
"docOptionSetId": "mirror",
},
"defaultValue": true
}
],
}

