List placeholders
Returns the placeholders you may write into a template for a given kind of recipient. Ask for more than one and you get only the placeholders all of them share, which is exactly the set a template addressed to all of them is allowed to use.
Authorization
AuthorizationstringrequiredQuery parameters
channelsenum<string>[]requiredThe kinds of recipient you are writing for. Repeat the parameter for more than one value, for example ?channels=tenant&channels=lease. Leave it out and you get an empty list — this endpoint has no default.
Response
200 · The placeholders available to every channel that was asked for.
itemsPlaceholder[]requiredThe placeholders, in the order the first channel lists them. Empty when no channels were given.
401 · The access token is missing, expired, or not a property-manager token.
Template content is Handlebars. A placeholder is its key in double braces, and it can appear anywhere in the email subject, the email body, or the chat content.
<p>Hi {{first_name}},</p>
<p>Rent for {{unit_address}} is {{rent_amount}} and is due on {{next_rent_due_date}}.</p>
<p>{{company_name}} · {{company_phone}}</p>Three placeholders are computed from the moment the message is sent rather than read off a record — send_date, next_rent_due_date and current_rent_period. Each takes an optional .NET date format string as an argument.
{{send_date}} renders as Aug 17, 2026
{{send_date "d MMMM yyyy"}} renders as 17 August 2026
{{current_rent_period}} renders as August 2026A placeholder that is not on the list for the channels you named makes Create and Update fail with a 400. Check content up front with Validate placeholders.
These are the sets this endpoint returns. Every channel below also offers the shared company placeholders listed at the end.
| Channel | Placeholders on top of the shared set |
|---|---|
tenant | name, names, first_name, last_name, email, phone, address |
owner | name, names, first_name, last_name, email, phone, address |
vendor | name, names, first_name, email, phone, address |
lease | name, names, first_name, lease_start, lease_end, rent_amount, balance, unit_name, property_name, property_address, unit_address, move_in_date, move_out_date, last_payment_date, past_due_date, security_deposit_held, security_deposit_required, bedrooms, bathrooms, square_feet, market_rent, next_rent_due_date, current_rent_period |
maintenanceRequest | name, names, title, description, status, urgency, unit_name, property_name, property_address, due_date |
workOrder | name, names, title, description, status, urgency, reference, unit_name, property_name, property_address, due_date, vendor_name, approval_limit, tenant_contacts |
rentalApplication | name, names, first_name, last_name, email, phone, status, unit_name, property_name, property_address, move_in_date |
propertyManager | pm_name, first_name, last_name, email, phone — and no portal_link |
company | nothing beyond the shared set, and no portal_link |
The shared set, offered by every channel: company_name, company_email, company_phone, company_address, property_manager_name, property_manager_phone, send_date, and portal_link. portal_link points at the recipient's own portal, so the propertyManager and company channels — which have no single recipient — do not offer it.