Webhook tool

Buildium AI voice agents that log maintenance requests by phone

The agent finds the tenant's lease in Buildium, files a resident request with the details staff need, and sends emergencies to on-call maintenance.

Maintenance line agent

Takes tenant maintenance calls and files resident requests.

Instructions

Ask for the tenant's name and unit, look them up, and confirm the address. Ask what is wrong, whether staff may enter, and whether there are pets, then file the request. Transfer gas smells, flooding, no heat, no water and lockouts to on-call maintenance at once.

Handoff
On-call maintenance

Connected tools

  • Find tenantWebhook
  • Create maintenance requestWebhook
  • Transfer to on-call maintenanceTransfer

What a Buildium AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

The agent searches Buildium's rental tenants by name and unit number and confirms the address before it files anything.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Find tenant

Searches Buildium's rental tenants by name and unit number.

Show the JSON definition
find_tenant
{
  "type": "webhook",
  "name": "find_tenant",
  "description": "Finds the caller's tenant record and lease. Use it before filing a request, and pass the tenant ID and lease ID it returns to create_maintenance_request.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.buildium.com/v1/leases/tenants",
    "method": "GET",
    "query_params_schema": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The tenant's name, or part of it."
        },
        "unitnumber": {
          "type": "string",
          "description": "The unit number the caller gave, such as 4B."
        }
      },
      "required": [
        "name"
      ]
    },
    "request_headers": {
      "x-buildium-client-id": "YOUR_CLIENT_ID",
      "x-buildium-client-secret": {
        "type": "secret",
        "secret_value": "YOUR_CLIENT_SECRET"
      }
    }
  }
}

Webhook

Create maintenance request

Files a resident request in Buildium.

Show the JSON definition
create_maintenance_request
{
  "type": "webhook",
  "name": "create_maintenance_request",
  "description": "Files a maintenance request for the tenant found by find_tenant.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.buildium.com/v1/tasks/residentrequests",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "Title": {
          "type": "string",
          "description": "Short title, such as Kitchen sink leaking. Under 127 characters."
        },
        "Description": {
          "type": "string",
          "description": "What the tenant described, in a few sentences."
        },
        "UnitAgreementId": {
          "type": "integer",
          "description": "The lease ID from find_tenant."
        },
        "RequestedByEntityId": {
          "type": "integer",
          "description": "The tenant ID from find_tenant."
        },
        "TaskStatus": {
          "type": "string",
          "constant_value": "New"
        },
        "Priority": {
          "type": "string",
          "description": "High if the problem gets worse while it waits, otherwise Normal.",
          "enum": [
            "Low",
            "Normal",
            "High"
          ]
        },
        "IsEntryPermittedByResident": {
          "type": "boolean",
          "description": "Whether the tenant allows staff to enter when they are not home."
        },
        "DoesResidentHavePets": {
          "type": "boolean",
          "description": "Whether the tenant has pets."
        }
      },
      "required": [
        "Title",
        "Description",
        "UnitAgreementId",
        "RequestedByEntityId",
        "Priority"
      ]
    },
    "request_headers": {
      "x-buildium-client-id": "YOUR_CLIENT_ID",
      "x-buildium-client-secret": {
        "type": "secret",
        "secret_value": "YOUR_CLIENT_SECRET"
      }
    }
  }
}

Transfer

Transfer to on-call maintenance

Cold transfer to on-call maintenance.

Show the JSON definition
transfer_to_maintenance
{
  "config": {
    "system_tools": {
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550137"
            },
            "condition": "The caller reports a gas smell, flooding or active leak through a ceiling, no heat, no water, or a lockout."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. The tools call Buildium's Open API directly, with your API key's client ID and secret sent as headers on every request. Vendor details read in November 2026.

  1. Turn on the Open API

    Buildium's Open API needs a Premium subscription. An admin turns it on under Settings > Application settings > Api settings.

  2. Create a scoped API key

    Under Settings > Developer Tools, create a key with View on Rentals > Tenants and View and Edit on Tasks > Tasks, and nothing else. Copy the secret, since Buildium shows it once.

  3. Add the tools

    Send the client ID and secret as the x-buildium-client-id and x-buildium-client-secret headers, with the secret stored as a secret.

  4. Test in the sandbox

    Point the tools at apisandbox.buildium.com, file a request from a test call, and check it under Tasks before you switch to api.buildium.com.

Before you build

Lookups by name and unit

The tenant search matches names and unit numbers that contain what the caller said. Have the agent read the address back before it files the request.

Rate limit

Buildium allows 10 concurrent requests per second per account and returns 429 above that. A phone line rarely gets close, but share the budget with your other integrations.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Buildium AI voice agent FAQs

Can an AI agent take maintenance calls for Buildium?

Yes. A Cartesia agent finds the tenant by name and unit number, files a resident request in Buildium with a title, description and priority, and transfers emergencies such as gas smells or flooding to on-call maintenance. The tools call Buildium's Open API directly, with no service in between.

Which Buildium plan does the Open API need?

Premium. An admin turns the Open API on under Settings, Application settings, Api settings, and creates a key under Developer Tools. Give the key View on Rentals > Tenants and View and Edit on Tasks > Tasks, and nothing else.

Does a Buildium voice agent need a service of my own?

No. Buildium authenticates with a client ID and secret sent as the x-buildium-client-id and x-buildium-client-secret headers, not OAuth, so the tools can call the API directly. Store the secret as a secret, and test against apisandbox.buildium.com first.

Can it take calls for associations as well as rentals?

Yes, with one more tool. Resident requests cover both, but association tenants have their own lookup at /v1/associations/tenants, so add a second lookup tool for association callers. The agent asks whether the caller rents or lives in an association, then uses the matching tool.

What does a Buildium maintenance agent cost to run?

Agents run at $0.03/min, plus LLM usage and telephony. Buildium bills the Premium plan the Open API needs. Transfers work only on Twilio and SIP trunk numbers, not on Cartesia numbers, so put the number on Twilio or a SIP trunk if the agent hands callers to staff.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia