Builder Backed V2 API Documentation

Comprehensive tools and APIs for seamless home builder integration with validated location hierarchy

📘

Builder Integration Guide

Step-by-step guide to integrate with Builder Backed APIs. Learn how to set up location hierarchies and create homes.

🏘️

Location Hierarchy

Manage regions, divisions, master communities, and neighborhoods with full validation support.

🏠

Home Management

Create, update, and manage home records with automatic location hierarchy validation.

👥

User Operations

Add and manage homeowners with support for profile images and organization users.

📋

Data Models

Comprehensive data structures and field documentation for all API requests and responses.

⚙️

Interactive Testing

Test API endpoints in real-time with our interactive Swagger UI interface.

Quick Start

New to Builder Backed APIs?

We recommend starting with our comprehensive Builder Integration Guide, which walks you through the complete setup process step by step.

Open Builder Integration Guide

What You'll Learn

  • Prerequisites: Authentication, region activation, and data requirements
  • Step 1: Creating location hierarchies (Divisions → Master Communities → Neighborhoods)
  • Step 2: Creating homes with homeowners and automatic location validation
  • Testing: Using Swagger UI for interactive API testing
  • Troubleshooting: Common errors and solutions

Integration Workflow

Region (activated by Builder Backed)
  └── Division (you create)
      └── Master Community (you create)
          └── Neighborhood (you create)
              └── Homes (you create)

Key Features:

  • Automatic location hierarchy validation
  • V2 APIs with improved data structures
  • Comprehensive error handling
  • OAuth2 authentication
  • Interactive Swagger UI for testing

Quick Links

V2 Homes API

The V2 Homes API provides comprehensive home management with automatic location hierarchy validation. All endpoints require OAuth2 authentication with the home.write scope.

Base URL: https://api-stage.builderbacked.com/api/v2/homes

Get Home by External ID

GET Get Home

/api/v2/homes/{externalId}

Retrieves a single home by its external ID.

Parameters:
  • externalId (path) - Your external ID for the home
Example Request:
curl -X GET "https://api-stage.builderbacked.com/api/v2/homes/HOME_12345" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests

url = "https://api-stage.builderbacked.com/api/v2/homes/HOME_12345"
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}

response = requests.get(url, headers=headers)
home = response.json()
print(f"Home: {home['addressLine1']}, {home['city']}, {home['state']}")
Success Response (200 OK):
{
  "id": 98765,
  "externalId": "HOME_12345",
  "addressLine1": "123 Main St",
  "city": "Columbus",
  "state": "OH",
  "postalCode": "43215",
  "type": "Single Family",
  "neighborhoodExternalId": "NH_001",
  "masterCommunityExternalId": "MC_001",
  "divisionExternalId": "DIV_001",
  "regionExternalId": "Cincinnati",
  "status": "ACTIVE",
  "homeSource": "BuilderRegistration"
}
Try in Swagger UI

Create Home

POST Create Home

/api/v2/homes

Creates a new home with automatic location hierarchy validation. The system validates the entire chain from neighborhood to region.

Automatic Validation: When you provide a neighborhoodExternalId, the system automatically:
  • Validates the neighborhood exists and is active
  • Validates the master community (parent) is active
  • Validates the division (grandparent) is active
  • Validates the region (great-grandparent) is active
Required Fields:
Field Type Description
externalId string Your unique ID for this home
addressLine1 string Street address
city string City name
state string State code (2 letters)
postalCode string ZIP code
type enum "Single Family" or "Multi Family"
neighborhoodExternalId string External ID of the neighborhood
Optional Fields:
  • addressLine2 - Apartment/unit number
  • marketHome - Boolean flag (default: false)
  • jobId - Job identifier
  • productCollection - Product line
  • model - Home model name
  • closingDate - Actual closing date (ISO 8601)
  • scheduledClosingDate - Scheduled closing date (ISO 8601)
  • homeowners - Array of homeowner objects
Example Request:
{
  "externalId": "HOME_12345",
  "addressLine1": "123 Main St",
  "city": "Columbus",
  "state": "OH",
  "postalCode": "43215",
  "type": "Single Family",
  "model": "Preston",
  "neighborhoodExternalId": "NH_001",
  "homeowners": [
    {
      "email": "john.smith@email.com",
      "firstName": "John",
      "lastName": "Smith"
    }
  ]
}
import requests

url = "https://api-stage.builderbacked.com/api/v2/homes"
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}
home_data = {
    "externalId": "HOME_12345",
    "addressLine1": "123 Main St",
    "city": "Columbus",
    "state": "OH",
    "postalCode": "43215",
    "type": "Single Family",
    "neighborhoodExternalId": "NH_001"
}

response = requests.post(url, headers=headers, json=home_data)
home = response.json()
print(f"Created home: {home['id']}")
curl -X POST "https://api-stage.builderbacked.com/api/v2/homes" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "HOME_12345",
    "addressLine1": "123 Main St",
    "city": "Columbus",
    "state": "OH",
    "postalCode": "43215",
    "type": "Single Family",
    "neighborhoodExternalId": "NH_001"
  }'
Try in Swagger UI

Update Home

PUT Update Home

/api/v2/homes

Updates an existing home. Note: Homeowners cannot be updated via this endpoint - use the dedicated homeowner endpoints below.

Example Request:
{
  "externalId": "HOME_12345",
  "addressLine1": "123 Main St",
  "city": "Columbus",
  "state": "OH",
  "postalCode": "43215",
  "type": "Single Family",
  "model": "Preston Deluxe",
  "neighborhoodExternalId": "NH_001"
}
url = "https://api-stage.builderbacked.com/api/v2/homes"
home_data = {
    "externalId": "HOME_12345",
    "model": "Preston Deluxe"  # Update model
    # Include all required fields
}

response = requests.put(url, headers=headers, json=home_data)
print(f"Updated home: {response.status_code}")
Try in Swagger UI

Add Homeowner to Home

POST Add Homeowner

/api/v2/homes/{externalHomeId}/users

Adds one or more homeowners to an existing home.

Homeowner Fields:
  • email (required) - Email address
  • firstName - First name
  • lastName - Last name
  • middleName - Middle name
  • prefix - Prefix (e.g., "Mr.", "Mrs.")
  • suffix - Suffix (e.g., "Jr.", "Sr.")
Example Request:
{
  "email": "jane.smith@email.com",
  "firstName": "Jane",
  "lastName": "Smith",
  "prefix": "Mrs."
}
url = f"https://api-stage.builderbacked.com/api/v2/homes/HOME_12345/users"
homeowner = {
    "email": "jane.smith@email.com",
    "firstName": "Jane",
    "lastName": "Smith"
}

response = requests.post(url, headers=headers, json=homeowner)
print(f"Added homeowner: {response.status_code}")
Try in Swagger UI

Remove Homeowner from Home

DELETE Remove Homeowner

/api/v2/homes/{externalHomeId}/users/{email}

Removes a homeowner from a home by their email address.

Example Request:
curl -X DELETE "https://api-stage.builderbacked.com/api/v2/homes/HOME_12345/users/jane.smith@email.com" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
url = f"https://api-stage.builderbacked.com/api/v2/homes/HOME_12345/users/jane.smith@email.com"
response = requests.delete(url, headers=headers)
print(f"Removed homeowner: {response.status_code}")
Try in Swagger UI

V2 Users API

The V2 Users API provides organization user management with support for profile images. All endpoints require OAuth2 authentication with the user.write scope.

Base URL: https://api-stage.builderbacked.com/api/v2/users

Check if User Exists

GET Check User

/api/v2/users/{email}

Checks if a user exists by email address.

Example Request:
curl -X GET "https://api-stage.builderbacked.com/api/v2/users/john.smith@email.com" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
url = "https://api-stage.builderbacked.com/api/v2/users/john.smith@email.com"
response = requests.get(url, headers=headers)
if response.status_code == 200:
    print("User exists")
elif response.status_code == 404:
    print("User not found")
Try in Swagger UI

Create Organization User

POST Create User

/api/v2/users

Creates a new organization user (employee) with optional profile image support.

Content-Type: multipart/form-data
Profile Image Requirements:
  • Maximum file size: 10MB
  • Supported formats: JPEG, PNG, GIF, BMP, WebP, SVG
Required Fields:
Field Type Description
externalId string Your external ID (e.g., employee ID)
firstName string First name
lastName string Last name
roleName string User role (e.g., "Field Manager")
Optional Fields:
  • prefix - Name prefix (e.g., "Mr.")
  • middleName - Middle name or initial
  • suffix - Name suffix (e.g., "Jr.")
  • phoneNumber - Phone number
  • email - Email address
  • defaultTimezone - Timezone (EASTERN, CENTRAL, MOUNTAIN, etc.)
  • profileImage - Profile image file
Example Request (Python with file):
import requests

url = "https://api-stage.builderbacked.com/api/v2/users"
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}

user_data = {
    "externalId": "EMP_12345",
    "firstName": "John",
    "lastName": "Smith",
    "email": "john.smith@builder.com",
    "roleName": "Field Manager",
    "phoneNumber": "(555) 555-5555"
}

files = {
    "user": (None, json.dumps(user_data), "application/json"),
    "profileImage": ("profile.jpg", open("profile.jpg", "rb"), "image/jpeg")
}

response = requests.post(url, headers=headers, files=files)
user = response.json()
print(f"Created user: {user['firstName']} {user['lastName']}")
Try in Swagger UI

Location Hierarchy API

The Location Hierarchy API manages the four-level hierarchy: Regions → Divisions → Master Communities → Neighborhoods. All endpoints require OAuth2 authentication with the location.write scope.

Base URL: https://api-stage.builderbacked.com/api/v2/locations
Hierarchy Structure:
Region (activated by Builder Backed)
  └── Division (you create)
      └── Master Community (you create)
          └── Neighborhood (you create)

Regions

Regions are the top level of the hierarchy and must be activated by Builder Backed before you can create divisions.

GET Get All Regions

/api/v2/locations/regions

Retrieves all active regions for your builder account.

Example Request:
curl -X GET "https://api-stage.builderbacked.com/api/v2/locations/regions" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Try in Swagger UI

Divisions

Divisions are the first level you create under regions.

POST Create Division

/api/v2/locations/divisions

Creates a new division under a region.

Required Fields:
  • externalId - Your unique ID
  • name - Division name
  • regionName - Name of parent region
Optional Fields:
  • displayName - Alternative display name
  • abbreviatedName - Short code
Example Request:
{
  "externalId": "DIV_001",
  "name": "Cincinnati Division",
  "regionName": "Cincinnati"
}
Try in Swagger UI

GET Get All Divisions

/api/v2/locations/divisions

PUT Update Division

/api/v2/locations/divisions

Master Communities

Master Communities are created under divisions and group related neighborhoods.

POST Create Master Community

/api/v2/locations/master-communities

Required Fields:
  • externalId - Your unique ID
  • name - Master Community name
  • divisionExternalId - External ID of parent division
Example Request:
{
  "externalId": "MC_001",
  "name": "Shaker Run",
  "divisionExternalId": "DIV_001"
}
Try in Swagger UI

Neighborhoods

Neighborhoods are the lowest level and directly contain homes.

POST Create Neighborhood

/api/v2/locations/neighborhoods

Required Fields:
  • externalId - Your unique ID
  • name - Neighborhood name
  • masterCommunityExternalId - External ID of parent master community
Example Request:
{
  "externalId": "NH_001",
  "name": "Lakeside",
  "masterCommunityExternalId": "MC_001"
}
Try in Swagger UI

For complete endpoint documentation including GET, UPDATE, ACTIVATE, and DEACTIVATE operations, see the Builder Integration Guide or Swagger UI.

Data Models

Home Models

ExternalHomeRequestV3 (Create/Update)

Request model for creating or updating homes.

Field Type Required Description
externalId string Your external ID for the home
addressLine1 string Street address line 1
addressLine2 string Street address line 2
city string City
state string State code (2 letters)
postalCode string Postal code
type enum "Single Family" or "Multi Family"
neighborhoodExternalId string External ID of neighborhood
marketHome boolean Whether this is a market home
jobId string Job ID
productCollection string Product collection
model string Home model
closingDate datetime Actual closing date (ISO 8601)
scheduledClosingDate datetime Scheduled closing date (ISO 8601)
homeowners array Array of homeowner objects

ExternalHomeResponseV3 (Response)

Response model returned from home operations. Includes all request fields plus:

Field Type Description
id number Internal home ID
fullAddress string Auto-generated full address
regionExternalId string Auto-populated from hierarchy
divisionExternalId string Auto-populated from hierarchy
masterCommunityExternalId string Auto-populated from hierarchy
homeSource enum "BuilderRegistration" or "TargetedRegistration"
status enum "Inactive", "Active", or "Pending"

User/Homeowner Models

HomeUserRequestV2

Model for homeowner information.

Field Type Required Description
email string Email address (validated)
name string Full name
prefix string Name prefix (e.g., "Mr.", "Mrs.")
firstName string First name
middleName string Middle name or initial
lastName string Last name
suffix string Name suffix (e.g., "Jr.", "Sr.")

ExternalUserRequest

Model for creating organization users.

Field Type Required Description
externalId string Your external ID (e.g., employee ID)
firstName string First name
lastName string Last name
roleName string User role
email string Email address
phoneNumber string Phone number
defaultTimezone enum EASTERN, CENTRAL, MOUNTAIN, ARIZONA, PACIFIC, ALASKA, HAWAII

Location Models

Location Request Models

All location requests (Division, Master Community, Neighborhood) share similar fields:

Field Type Required Description
externalId string Your unique ID
name string Location name
displayName string Alternative display name
abbreviatedName string Short code
Parent Reference string Division: regionName
Master Community: divisionExternalId
Neighborhood: masterCommunityExternalId

Error Handling

Error Response Format

All errors follow a consistent format:

{
  "timestamp": "2025-01-03T10:30:00Z",
  "status": 400,
  "error": "Bad Request",
  "message": "Validation failed for field 'externalId'",
  "path": "/api/v2/homes"
}

Common HTTP Status Codes

200 OK

Request successful. Response body contains the requested data.

400 Bad Request

Cause: Invalid request body, missing required fields, or validation errors.

Solution: Check the error message for specific field validation issues. Verify all required fields are present and correctly formatted.

401 Unauthorized

Cause: Missing or invalid authentication token.

Solution: Ensure the Authorization header includes a valid Bearer token: Authorization: Bearer YOUR_ACCESS_TOKEN

403 Forbidden

Cause: Token does not have required scopes.

Solution: Verify your access token includes the necessary scopes (e.g., home.write, location.write, user.write).

404 Not Found

Cause: Resource not found (e.g., home with specified externalId doesn't exist, or referenced parent location doesn't exist).

Solution: Verify the externalId or path parameter is correct. For location hierarchy errors, ensure all parent locations exist and are active.

409 Conflict

Cause: Resource already exists with the given externalId.

Solution: Use a unique externalId, or use PUT endpoint to update the existing resource.

500 Internal Server Error

Cause: Unexpected server error.

Solution: Contact Builder Backed support at eric@bebuilderbacked.com with the error details.

API-Specific Errors

Invalid Home Type

Error: "Invalid value for 'type' field"

Cause: The type field must be exactly "Single Family" or "Multi Family".

Solution: Use the exact enum values (case-sensitive, with space).

Location Hierarchy Validation Failed

Error: "Neighborhood with external ID 'NH_001' not found"

Cause: The neighborhood doesn't exist, or one of its parent locations (master community, division, or region) is missing or inactive.

Solution: Verify the complete location hierarchy exists and all levels are active.

Region Not Activated

Error: "Region 'Cincinnati' not found"

Cause: Regions have not been activated by Builder Backed.

Solution: Contact Builder Backed support to activate regions for your account.

For more detailed troubleshooting, see the Common Errors section in the Builder Integration Guide.

Builder Integration Guide

The Builder Integration Guide provides a comprehensive, step-by-step tutorial for integrating with Builder Backed APIs.

What's Included

  • Prerequisites: OAuth2 authentication and region activation
  • Step 1: Creating location hierarchies (divisions, master communities, neighborhoods)
  • Step 2: Creating homes and adding homeowners
  • Complete Examples: End-to-end Python code examples
  • Common Errors: Troubleshooting guide with solutions
  • Testing Guide: Swagger UI walkthrough
Open Builder Integration Guide (Opens in new tab)

Quick Start Integration

If you're new to Builder Backed, we strongly recommend starting with the integration guide. It will walk you through:

  1. Verifying your regions are activated
  2. Creating your first division, master community, and neighborhood
  3. Creating your first home with homeowners
  4. Testing everything in Swagger UI

Estimated Time: 30-60 minutes for complete setup

Why Use the Integration Guide?

The integration guide provides:

  • Step-by-step instructions with no steps skipped
  • Copy-paste ready code that you can customize
  • Common pitfalls and how to avoid them
  • Visual aids showing the location hierarchy relationships
  • Interactive testing tips using Swagger UI

Interactive API Testing

Swagger UI

Builder Backed provides an interactive Swagger UI interface where you can test all API endpoints in real-time without writing code.

Open Swagger UI

How to Use Swagger UI

Step 1: Authenticate
  1. Click the "Authorize" button at the top right
  2. Select the required scopes: location.write, home.write, user.write
  3. Enter your OAuth2 client credentials
  4. Click "Authorize" then "Close"
Step 2: Navigate to an Endpoint
  1. Find the API category (Homes, Locations, Users)
  2. Click on the endpoint you want to test
  3. Click "Try it out"
Step 3: Execute the Request
  1. Fill in the request parameters or body
  2. Click "Execute"
  3. View the response below, including status code and response body

Swagger URL Structure

You can link directly to specific API sections:

API Documentation Endpoints

  • Swagger UI: /swagger-ui.html
  • OpenAPI JSON: /api-docs
  • V2 API Group: /api-docs?group=v2-apis

Testing Best Practices

  • Test in Order: Start with regions, then divisions, then master communities, then neighborhoods, then homes
  • Save External IDs: Keep track of the externalId values you create for use in subsequent requests
  • Verify Responses: Check that auto-populated fields (like location hierarchy) are correct
  • Test Error Cases: Try invalid inputs to understand error responses
  • Use GET Endpoints: Verify created resources using GET endpoints before proceeding

Need Help?

If you encounter any issues with the interactive testing environment or need assistance with API integration:

  • Check our Models section for detailed schema information
  • Review the Errors page for troubleshooting guidance
  • Consult the Builder Integration Guide
  • Contact our development team at eric@bebuilderbacked.com