> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.fortresstech.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server.

# List Available Units

GET https://api.fortresstech.io/v1/properties/{propertyId}/availableUnits

Available by RequestList the currently available units for a property, including quoting rent, availability dates, amenities, and floor plan details. Intended for Internet Listing Service (ILS) and syndication partners publishing live availability.This endpoint is part of our evolving API ecosystem.
To explore availability for your integration, please contact our team.Filtering, sorting, field selection, and pagination are not available on this endpoint. It always returns the complete set of currently available units for the requested property, and the `fields`, `sort`, `filter`, `page`, and `limit` query parameters are ignored.

Reference: https://developer.fortresstech.io/api-reference/units/list-available-units

## Authentication

- `x-api-key` header (required) — API Key authentication via header

## Request

### Path parameters

- `propertyId` (string, required) — The id of the property

## Response

### 200

Expected response to a valid request

- `meta` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaMeta, optional)
- `data` (list of PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItems, optional)

## Types

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaMeta

- `applyNowEnabled` (boolean, optional)
- `propertyType` (string, optional, nullable)
- `count` (integer, optional)
- `special` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaMetaSpecial, optional, nullable) — The requested property's current move-in special, as the property's leasing team maintains it in Fortress. Free text, written by staff. It applies to the whole property, not to a specific unit, and under combined availability it does not cover units from linked properties. Null when the property has no current special (none listed, cleared, or not yet started).

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItems

- `unitId` (string, optional)
- `unitNumber` (string, optional)
- `quotingRent` (double, optional)
- `availableDate` (date, optional, nullable)
- `availableThroughDate` (date, optional, nullable)
- `amenities` (list of string, optional)
- `charges` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsCharges, optional, nullable)
- `floorPlan` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsFloorPlan, optional)

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaMetaSpecial

The requested property's current move-in special, as the property's leasing team maintains it in Fortress. Free text, written by staff. It applies to the whole property, not to a specific unit, and under combined availability it does not cover units from linked properties. Null when the property has no current special (none listed, cleared, or not yet started).

- `description` (string, required) — The special as written by the leasing team.
- `startDate` (datetime, required, nullable) — When this special was listed, or null when no date was recorded.

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsCharges

- `monthlyRecurring` (list of PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesMonthlyRecurringItems, optional)
- `oneTime` (list of PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesOneTimeItems, optional)

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsFloorPlan

- `name` (string, optional, nullable)
- `imageName` (string, optional, nullable)
- `beds` (double, optional, nullable)
- `baths` (double, optional)
- `squareFeet` (double, optional, nullable)
- `marketingDescription` (string, optional, nullable)

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesMonthlyRecurringItems

- `label` (string, optional)
- `value` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesMonthlyRecurringItemsValue, optional)

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesOneTimeItems

- `label` (string, optional)
- `value` (PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesOneTimeItemsValue, optional)

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesMonthlyRecurringItemsValue

- double
- string

### PropertiesPropertyIdAvailableUnitsGetResponsesContentApplicationJsonSchemaDataItemsChargesOneTimeItemsValue

- double
- string

## Examples

**Response**

```json
{
  "meta": {
    "applyNowEnabled": true,
    "propertyType": "string",
    "count": 1,
    "special": {
      "description": "string",
      "startDate": "2024-01-15T09:30:00Z"
    }
  },
  "data": [
    {
      "unitId": "string",
      "unitNumber": "string",
      "quotingRent": 1.1,
      "availableDate": "2023-01-15",
      "availableThroughDate": "2023-01-15",
      "amenities": [
        "string"
      ],
      "charges": {
        "monthlyRecurring": [
          {
            "label": "string",
            "value": 1.1
          }
        ],
        "oneTime": [
          {
            "label": "string",
            "value": 1.1
          }
        ]
      },
      "floorPlan": {
        "name": "string",
        "imageName": "string",
        "beds": 1.1,
        "baths": 1.1,
        "squareFeet": 1.1,
        "marketingDescription": "string"
      }
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.fortresstech.io/v1/properties/propertyId/availableUnits"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.fortresstech.io/v1/properties/propertyId/availableUnits';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fortresstech.io/v1/properties/propertyId/availableUnits"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.fortresstech.io/v1/properties/propertyId/availableUnits")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.fortresstech.io/v1/properties/propertyId/availableUnits")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.fortresstech.io/v1/properties/propertyId/availableUnits', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.fortresstech.io/v1/properties/propertyId/availableUnits");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/properties/propertyId/availableUnits")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```