> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.fortresstech.io/api-reference/applications/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server. # Applications Overview > Overview of the Applications API endpoints and functionality The Applications API provides endpoints for managing rental applications throughout the application process. ## Key Concepts ### Application Status Applications can be in various states: * `APPROVED` - Application has been approved * `IN_PROCESS` - Application is being reviewed * `DENIED` - Application has been denied * `WAITLIST` - Application is on waitlist * `CANCELED` - Application was canceled * `ABANDONED` - Application was abandoned ## Integration Flow > **Note** > > External Application Providers must follow the Fortress application lifecycle to ensure data integrity and internal system alignment. The Fortress application lifecycle follows a structured flow that ensures proper data management and system integration. Below is the required sequence for external application providers: ```mermaid sequenceDiagram participant Provider as Application Provider participant API as Fortress API participant System as Fortress System Note over Provider,System: 1. Create Prospect Provider->>API: POST /prospects API->>System: Create prospect record System-->>API: prospectId API-->>Provider: prospectId (store for lifecycle) Note over Provider,System: 2. Qualify & Validate Provider->>Provider: Perform qualification logic Note over Provider,System: 3. Create Application Provider->>API: POST /applications
(prospectId, unitId, applicants) API->>System: Validate unit availability System-->>API: applicationId API-->>Provider: applicationId Note over Provider,System: 4. Manage Application Provider->>API: POST /applications/{id}/customers Provider->>API: POST /applications/{id}/pets Provider->>API: POST /transactions (fees) Note over Provider,System: 5. Update Status Provider->>API: PUT /applications/{id}/status API->>System: Update application status System-->>Provider: Status updated Note over Provider,System: 6. Submit Lease (if applicable) Provider->>API: POST /households/{id}/documents API->>System: Store signed lease System-->>Provider: Document uploaded Note over Provider,System: 7. Complete Household System->>System: Lock household (no further modifications) ``` ### Step 1: Create a Prospect All applications must begin with a prospect record. A prospect represents a lead entering the system. **Endpoint:** `POST /prospects` ```bash curl -X POST https://api.fortress.build/prospects \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "propertyId": "uuid", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "555-123-4567" }' ``` **Important:** Store the returned `prospectId` - it will be referenced throughout the lifecycle. ### Step 2: Prospect Qualification & Validation Your system is responsible for qualification logic if performed externally. Once validated, you may convert the prospect into an applicant by creating an application. ### Step 3: Create Application From Prospect An application can only be created from an existing prospect. **Endpoint:** `POST /applications` **Required Input:** * `prospectId` - The prospect ID from Step 1 * `unitId` - The unit being applied for * Applicant details ```bash curl -X POST https://api.fortress.build/applications \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prospectId": "uuid", "unitId": "uuid", "applicants": [...] }' ``` > **Tip** > > You must ensure the assigned unit is eligible and available. Fortress enforces unit-level availability unless bypass rules are enabled during your onboarding. ### Step 4: Assign Unit A unit must be assigned at creation time. Unit assignment is mandatory before an application can move to approval. If the unit changes later, you must use the corresponding update endpoint (if allowed). ### Step 5: Application Management #### Status Updates The application provider is responsible for reflecting real-time status changes. **Endpoint:** `PUT /applications/{id}/status` **Common statuses:** * In Progress * Approved * Denied * Cancelled Status updates must remain synchronized with your system. #### Managing Applicants If the number of applicants changes during the application process, use these endpoints: | Action | Endpoint | Method | | ------------------------ | -------------------------------------------- | :----: | | Add an applicant | `/applications/{id}/customers` | POST | | Update an applicant | `/applications/{id}/customers/{customerId}` | PUT | | Remove an applicant | `/applications/{id}/customers/{customerId}` | DELETE | | Change primary applicant | `/applications/{id}/customers/changePrimary` | PATCH | | List minors | `/applications/{id}/minors` | GET | | Read minor | `/applications/{id}/minors/{minorId}` | GET | | Add minor | `/applications/{id}/minors` | POST | | Update minor | `/applications/{id}/minors/{minorId}` | PUT | | Delete minor | `/applications/{id}/minors/{minorId}` | DELETE | > **Note** > > Changes in household composition must occur before the application is completed or the lease is signed. #### Managing Pets Pets are part of the household makeup and must be synced during the application lifecycle. | Action | Endpoint | Method | | -------------- | --------------------------------- | :----: | | Add/Update Pet | `/applications/{id}/pets` | POST | | Remove Pet | `/applications/{id}/pets/{petId}` | DELETE | #### Fee Collection & Payments (Optional) If the Application Provider handles fee collection (application fees, holding deposits, etc.): **Endpoint:** `POST /transactions` **Requirements:** * Each transaction requires a valid transaction code * Transaction codes are defined per organization/property by Fortress * You must confirm transaction codes before development begins ```bash curl -X POST https://api.fortress.build/transactions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "applicationId": "uuid", "amount": 50.00, "transactionCode": "APP_FEE", "ledger": "RENT" }' ``` > **Tip** > > Using incorrect or unauthorized transaction codes will result in processing errors. Verify codes with Fortress before implementation. ### Step 6: Lease Sync & Document Upload If your system handles leasing outside of Fortress, upon application approval and lease execution: **You must send a copy of the signed lease** **Endpoint:** `POST /households/{id}/documents` This ensures Fortress maintains a full household record. ### Step 7: Household Completion Rules Once the lease is completed, the household is locked. No further modifications are allowed to: * Customers * Pets * Household structure * Lease metadata ## Best Practices & Expectations To ensure successful integration with the Fortress application lifecycle, follow these best practices: ### ID Management * **Always store all IDs** returned from Fortress (prospect, application, customer, unit, household) * Reference these IDs throughout the application lifecycle * Do not assume IDs can be regenerated or retrieved without proper storage ### Status Synchronization * **Keep your application statuses aligned** with Fortress's allowed status model * Ensure real-time synchronization of status changes * Validate status transitions are permitted before updating ### Unit Assignment * **Validate unit availability** before assigning * Ensure the unit is eligible for the application * Respect unit-level availability rules unless bypass is enabled ### Data Quality * **Do not send incomplete or placeholder applicants** * Ensure all required fields are populated with accurate data * Validate data before submission to avoid processing errors ### Reliability & Performance * **Use idempotency keys** for safe retry logic (if supported in your contract) * Implement proper error handling and retry mechanisms * **Avoid unnecessary calls** to prevent throttling and ensure optimal performance ### Financial Transactions * **Confirm transaction codes before implementing fee collection** * Verify codes are valid for your organization/property * Test transaction processing in a non-production environment first ### Document Management * **Ensure lease documents are final and complete** before uploading * Upload only signed, executed lease agreements * Verify document format and content before submission ## Available Endpoints | Endpoint | Summary | Method | | -------------------------------------------------------------------------------------------------------------------------- | --------------------------- | :----: | | [`/applications`](/api-reference/applications/list-applications) | List Applications | GET | | [`/applications`](/api-reference/applications/create-application) | Create Application | POST | | [`/applications/{applicationId}`](/api-reference/applications/read-application) | Read Application | GET | | [`/applications/{applicationId}/status`](/api-reference/applications/update-application-status) | Update Application Status | PUT | | [`/applications/{applicationId}/customers`](/api-reference/applications/add-customer-to-application) | Add Customer to Application | POST | | [`/applications/{applicationId}/customers/{customerId}`](/api-reference/applications/update-application-customer) | Update Application Customer | PUT | | [`/applications/{applicationId}/customers/{customerId}`](/api-reference/applications/delete-application-customer) | Delete Application Customer | DELETE | | [`/applications/{applicationId}/customers/changePrimary`](/api-reference/applications/change-application-primary-customer) | Change Primary Customer | PATCH | | [`/applications/{applicationId}/minors`](/api-reference/applications/list-application-minors) | List Application Minors | GET | | [`/applications/{applicationId}/minors/{minorId}`](/api-reference/applications/read-application-minor) | Read Application Minor | GET | | [`/applications/{applicationId}/minors`](/api-reference/applications/add-minor-to-application) | Add Minor to Application | POST | | [`/applications/{applicationId}/minors/{minorId}`](/api-reference/applications/update-application-minor) | Update Application Minor | PUT | | [`/applications/{applicationId}/minors/{minorId}`](/api-reference/applications/delete-application-minor) | Delete Application Minor | DELETE | | [`/applications/{applicationId}/pets`](/api-reference/applications/add-pet-to-application) | Add Pet to Application | POST | | [`/applications/{applicationId}/pets/{petId}`](/api-reference/applications/update-application-pet) | Update Application Pet | PUT | | [`/applications/{applicationId}/pets/{petId}`](/api-reference/applications/delete-application-pet) | Delete Application Pet | DELETE | | [`/applications/{applicationId}/full`](/api-reference/applications/get-application-full) | Read Application Full | GET | | [`/applications/{applicationId}/cancel`](/api-reference/applications/cancel-application) | Cancel Application | POST | > Overview of the Applications API endpoints and functionality ## API Docs - Applications [Read everything about an application](https://developer.fortresstech.io/api-reference/applications/get-application-full.md) - Applications [List Applications](https://developer.fortresstech.io/api-reference/applications/list-applications.md) - Applications [Create Application](https://developer.fortresstech.io/api-reference/applications/create-application.md) - Applications [Read Application](https://developer.fortresstech.io/api-reference/applications/read-application.md) - Applications [Add Customer To Application](https://developer.fortresstech.io/api-reference/applications/add-customer-to-application.md) - Applications [Change Application Primary Customer](https://developer.fortresstech.io/api-reference/applications/change-application-primary-customer.md) - Applications [Update Application Customer](https://developer.fortresstech.io/api-reference/applications/update-application-customer.md) - Applications [Delete Application Customer](https://developer.fortresstech.io/api-reference/applications/delete-application-customer.md) - Applications [List Application Minors](https://developer.fortresstech.io/api-reference/applications/list-application-minors.md) - Applications [Add Minor To Application](https://developer.fortresstech.io/api-reference/applications/add-minor-to-application.md) - Applications [Read Application Minor](https://developer.fortresstech.io/api-reference/applications/read-application-minor.md) - Applications [Update Application Minor](https://developer.fortresstech.io/api-reference/applications/update-application-minor.md) - Applications [Delete Application Minor](https://developer.fortresstech.io/api-reference/applications/delete-application-minor.md) - Applications [Add Pet To Application](https://developer.fortresstech.io/api-reference/applications/add-pet-to-application.md) - Applications [Update Application Pet](https://developer.fortresstech.io/api-reference/applications/update-application-pet.md) - Applications [Delete Application Pet](https://developer.fortresstech.io/api-reference/applications/delete-application-pet.md) - Applications [Cancel Application](https://developer.fortresstech.io/api-reference/applications/cancel-application.md) - Applications [Update Application Status](https://developer.fortresstech.io/api-reference/applications/update-application-status.md) ## OpenAPI Specification The raw OpenAPI 3.1 specification for this API is available at: - [OpenAPI JSON](https://developer.fortresstech.io/openapi.json) - [OpenAPI YAML](https://developer.fortresstech.io/openapi.yaml)