curl --request GET \
--url https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"buildingId": "<string>",
"floor": "<string>",
"suiteNumber": "<string>",
"squareFootage": 123,
"type": "Office",
"rentable": true,
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"occupied": true
}{
"error": "Invalid Input",
"errorCode": "InvalidInput",
"message": "Unknown include keys: [bogus]; supported: [tags, documents, subleases]",
"status": "400 BAD_REQUEST",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "Unknown include keys: [bogus]; supported: [tags, documents, subleases]"
}{
"error": "JWT authentication is not supported. Use an API key."
}{
"error": "Access Denied",
"errorCode": "AccessDenied",
"message": "Not authorized. Missing capabilities: READ:TAG",
"status": "403 FORBIDDEN",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "Not authorized. Missing capabilities: READ:TAG"
}{
"error": "Entity Not Found",
"errorCode": "EntityNotFound",
"message": "This entity is not found in the system.",
"status": "404 NOT_FOUND",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "This entity is not found in the system."
}GET Building Space
Returns a single space by id.
Required capabilities: READ:BUILDING_SPACE
curl --request GET \
--url https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.prophia.com/rest/v2/accounts/{accountId}/buildings/{buildingId}/spaces/{spaceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"buildingId": "<string>",
"floor": "<string>",
"suiteNumber": "<string>",
"squareFootage": 123,
"type": "Office",
"rentable": true,
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"occupied": true
}{
"error": "Invalid Input",
"errorCode": "InvalidInput",
"message": "Unknown include keys: [bogus]; supported: [tags, documents, subleases]",
"status": "400 BAD_REQUEST",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "Unknown include keys: [bogus]; supported: [tags, documents, subleases]"
}{
"error": "JWT authentication is not supported. Use an API key."
}{
"error": "Access Denied",
"errorCode": "AccessDenied",
"message": "Not authorized. Missing capabilities: READ:TAG",
"status": "403 FORBIDDEN",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "Not authorized. Missing capabilities: READ:TAG"
}{
"error": "Entity Not Found",
"errorCode": "EntityNotFound",
"message": "This entity is not found in the system.",
"status": "404 NOT_FOUND",
"timestamp": "2026-09-02T20:41:03.118Z",
"localizedMessage": "This entity is not found in the system."
}Authorizations
Response
OK
Representation of a space or unit in a Building. Some example uses: a rentable suite, a conference room, storage space, or a full floor.
Floor the space sits on. This value primarily affects the grouping of Building Spaces in the Stacking Plan, but also governs which spaces have floor level encumbrances applied to them. For example if a ROFO Tag's offeredSpace component references 'FLOOR1' as its encumbranceSpaces value, all spaces having space.floor=1 will show as encumbered in the Stacking Plan.
What kind of unit this is. This is a referential value and does not affect how a space operates in the system.
Office, Retail, Industrial, Storage, Telecom, Parking, Conference Room, Lobby, Elevator, Fitness Center, License Agreement, Management Office, Amenity, Cafe, Bike Storage, Lounge, Other, zSuite Whether the space counts as rentable inventory. If marked as non-rentable, the space and leases associated with it, if you've chosen to continue associating leases with the space, may cease being present in reports like the Rent Roll. Marking a space as non-rentable is normally used in cases like Lobbies, Elevators, and like shared public spaces of the Building that are not eligible to be leased.
An override value: Allows the space to be marked as occupied, even when lacking an active lease associated with the space. A value of false does not mean that there are no associated active leases, only that the override is not currently marking the space as occupied. Best used for spaces that are not traditionally leased but you still want to show as occupied in the Stacking Plan and count towards occupied square footage statistics.

