Operations for managing lockboxes
RentEngine Public API (1.1.1)
Integrate your systems anywhere with RentEngine.
- Log in to your RentEngine developer portal
- In the top corner, click the "Create New API Key" button
- Provide a name for your token (e.g., "Integration Name")
- Click Create
- Copy the token to your clipboard and save it securely as it will not be displayed again
Important Security Notice: Your token will only be displayed ONCE at creation time. Make sure to copy it and store it securely. For security reasons, we cannot display the token again after this point.
Include your token in all API requests as a Bearer token in the Authorization header:
Authorization: Bearer your_token_here
- Store tokens securely in environment variables or a secure vault
- Never hardcode tokens in your application code
- Do not share tokens in public repositories or client-side code
- Use separate tokens for different integrations or environments
Each token generated by a user will have the full permissions of the user that created it across all accounts associated with that user. Actions will be logged in the name of that user & token.
Tokens will not expire. (Well not for 100 years at least). If a token is compromised or no longer needed:
- Log in to your RentEngine developer portal
- Find the token you wish to invalidate in the table in the API Keys section
- Click the "Revoke Token" icon that looks like a trash can
Once revoked, a token cannot be restored. You'll need to create a new token if needed.
All list endpoints in the RentEngine API support pagination to efficiently handle large datasets. Here's how to use pagination in your API requests:
Pagination Parameters
When making requests to list endpoints (e.g., /lockboxes
, /lockbox_events
, /units
), you can include the following query parameters:
limit
- Controls how many items to return per page (default: 50, max: 100)page_number
- Specifies which page to retrieve (0-indexed, default: 0)
Example request with pagination:
GET /api/public/v1/lockboxes?limit=25&page_number=1
This would return the second page of results with 25 items per page.
Response Format
Paginated responses include only the requested data. The total number of items across all pages is not included in the response.
Iterating Through Pages
To retrieve all items across multiple pages, increment the page_number
parameter until you've processed all pages. You can determine when you've reached the end when the response is shorter than the limit requested.
Performance Considerations
- Use appropriate
limit
values based on your needs. Smaller values reduce payload size but require more API calls, which can slow down performance and be subject to rate limits. - When filtering data, apply filters in the query parameters first to reduce the total number of items that need to be fetched.
RentEngine provides webhooks to notify your systems about events in real-time. This allows you to build integrations that respond immediately to changes in your RentEngine data.
Setting Up Webhooks
Webhooks can be configured through the RentEngine developer portal. You'll need to specify:
- The target URL where webhook events should be sent
- The data you want to monitor (e.g., lockboxes, units, lockbox_events)
- The event types you want to receive (INSERT, UPDATE, DELETE)
- An optional API key that will be included in webhook requests to your endpoint
Webhook Payload Structure
Webhook payloads follow this general structure:
{
"type": "INSERT|UPDATE|DELETE",
"table": "table_name",
"record": { /* The current state of the record (null for DELETE) */ },
"old_record": { /* The previous state of the record (null for INSERT) */ }
}
The specific fields in record
and old_record
will depend on the table that triggered the event.
Event Types
INSERT
: Sent when a new record is createdUPDATE
: Sent when an existing record is modifiedDELETE
: Sent when a record is deleted
Security Considerations
- Webhook endpoints should be HTTPS to ensure secure transmission of data
- Validate the API key included in the webhook request to ensure it's coming from RentEngine
- Implement idempotency in your webhook handlers to prevent duplicate processing
Webhook Delivery
RentEngine uses a reliable delivery system (QStash) to ensure webhooks are delivered even during temporary outages. If your endpoint is unavailable, we'll retry delivery with exponential backoff.
https://rentengine.redocly.app/_mock/openapi/
https://app.rentengine.io/api/public/v1/
https://staging-app.rentengine.io/api/public/v1/
Multifamily Properties
Operations for managing multifamily properties. Multifamily properties are used to syndicate large properties with paid advertising contracts to the paid rental feeds. For example, paid adverising contracts are required for the Zillow network if the building has more than 24 units, and for the Apartments.com if the building has more than 4 units. Other ILSs have different thresholds.
List of leasing events to create. Only 1 event is supported at a time.
Type of leasing event. Currently only "Assign to User" is supported.
Source of the leasing event
Additional context for the event. For "Assign to User" events the following fields are recognized:
assignedToUserIds
(array[uuid], required)applyActionInBulk
(boolean) - This will apply the action to all prospects with the same phone number. This is helpful for bulk assigning all units that the prospect is interested in to a single agent in one request.
- Mock server
https://rentengine.redocly.app/_mock/openapi/leasing_events
- Production environment
https://app.rentengine.io/api/public/v1/leasing_events
- Staging environment
https://staging-app.rentengine.io/api/public/v1/leasing_events
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://rentengine.redocly.app/_mock/openapi/leasing_events \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"events": [
{
"prospect_id": 12345,
"event_type": "Assign to User",
"source": "Other",
"notes": "Assigning to Alice",
"context": {
"assignedToUserIds": [
"1259ef6e-61ee-42cb-b6bd-7fe547569d7c"
],
"applyActionInBulk": false
}
}
]
}'
Leasing events created successfully
Timestamp when the leasing event was created
Planned date and time for the leasing event
Source of the leasing event
Type of the leasing event
Timestamp for the next follow-up
Additional context information for the event. Structure varies based on event_type.
[ { "id": 12345, "created_at": "2024-10-05T18:53:03.406168Z", "notes": "Reschedule", "prospect": 12345, "planned_date_time": "2024-10-05T18:53:03.406168Z", "source": "Phone Call", "event_type": "New", "next_follow_up": "2024-10-05T18:53:03.406168Z", "deleted": false, "created_by": "12345", "context": { … } } ]
Request
Webhook for leasing events (creates, updates, deletes). Leasing events of the following types are supported:
- "New"
- "Contacted, Awaiting Information"
- "Showing Desired"
- "Showing Scheduled"
- "Showing Complete"
- "Missed Showing"
- "Ghosting"
- "Application Sent to Prospect"
- "Application Received"
- "Application Pending"
- "Application in Owner Review"
- "Application Approved"
- "Withdrawn"
- "Application Rejected"
- "Prescreen Submitted"
- "Prescreen Rejected - Self reported credit"
- "Prescreen Rejected - Self reported income"
- "Prescreen Rejected - ID Verification"
- "Prescreen Approved"
- "Looking too early"
- "Lease out for signing"
- "Lease Signed"
- "Deposit Received"
- "Move-in Scheduled"
- "Moved In"
- "Unit of Interest Unavailable"
- "Not Interested"
- "Duplicate Lead"
- "Still Deciding"
- "HOA Application Sent To Prospect"
- "HOA Application Submitted"
- "HOA Application Approved"
- "HOA Application Rejected"
- "Showing Failed"
- "Showing Canceled"
- "Showing Confirmed"
- "Arrived for Showing"
- "Showing Started"
- "Log Note"
- "Assign to User"
- "Blocklist Prospect"
- "Unblock Prospect"
- "Reassign Showing"
Generic structure of webhook payloads
The newly created record
- Mock server
https://rentengine.redocly.app/_mock/openapi/LeasingEvents
- Production environment
https://app.rentengine.io/api/public/v1/LeasingEvents
- Staging environment
https://staging-app.rentengine.io/api/public/v1/LeasingEvents
{ "type": "INSERT", "table": "lockbox_events", "record": { "id": "123e4567-e89b-12d3-a456-426614174000", "lockbox_id": "123e4567-e89b-12d3-a456-426614174001", "event_type": "Install", "unit_id": "12345", "created_at": "2023-01-15T12:30:00Z", "data": null }, "old_record": null }
{ "success": true }