Closed beta · run Worlds on your machineBrowse worlds →
Docs menu · Yardi API

Worlds / Real estate

Yardi API

A local Yardi Voyager with properties, units, tenants, leases, charges, receipts and work orders. Test the property management agent that renews leases, posts charges and works the rent roll.

Base path
/Webservices
Auth
SOAP credentials in each request, wrapped here as bearer, the world key
Endpoints
12
Status
Active today

This reference previews the surface the Yardi world serves in the closed beta. Paths mirror the public Yardi API; the exact subset is confirmed when your workflow is scoped.

Connect

The run gives your agent these bindings. Keep your SDK; change only where it sends requests.

bindingmeaning
WORLDS_YARDI_URLThis world's origin followed by /Webservices
WORLDS_API_KEYThe world key, accepted wherever Yardi expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · fetch
const base = process.env.WORLDS_YARDI_URL + "/Webservices";

const res = await fetch(base + "/ItfResidentTransactions20.asmx/GetResidentTransactions_Login", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.WORLDS_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ YardiPropertyId: "prop01", TenantCode: "t0001234" }),
});

const data = await res.json();

API reference

Properties

Properties and units under management.

  • POST/Webservices/ItfILSGuestCard.asmx/GetPropertyConfigurationsList property configurations
  • POST/Webservices/ItfILSGuestCard.asmx/UnitAvailability_LoginGet unit availability
Fields · 4
PropertyCodestringProperty code
MarketingNamestringProperty name
AddressobjectStreet, city, state
UnitCountintegerNumber of units

Residents

Tenants, leases and balances.

  • POST/Webservices/ItfResidentData.asmx/GetResidentData_LoginGet resident data
  • POST/Webservices/ItfResidentTransactions20.asmx/GetResidentTransactions_LoginGet resident transactions
  • POST/Webservices/ItfResidentData.asmx/ImportResidentData_LoginImport resident data
Fields · 6
TenantCodestringResident code
FirstNamestringGiven name
LastNamestringFamily name
UnitCodestringUnit
LeaseFromDatedateLease start
LeaseToDatedateLease end

Charges and payments

Ledger charges and receipts.

  • POST/Webservices/ItfResidentTransactions20.asmx/ImportResidentTransactions_LoginPost resident transactions
  • POST/Webservices/ItfResidentTransactions20.asmx/GetChargeTypesList charge types
Fields · 5
TransactionIdstringTransaction id
ChargeCodestringCharge type
AmountnumberAmount
TransactionDatedatePosted date
DescriptionstringMemo

Service requests

Maintenance tickets for units.

  • POST/Webservices/ItfServiceRequests.asmx/GetServiceRequests_SearchSearch service requests
  • POST/Webservices/ItfServiceRequests.asmx/CreateServiceRequestCreate a service request
  • POST/Webservices/ItfServiceRequests.asmx/UpdateServiceRequestUpdate a service request
Fields · 6
ServiceRequestIdstringRequest id
PropertyCodestringProperty
UnitCodestringUnit
PrioritystringPriority
StatusstringOpen, in progress, closed
DescriptionstringProblem description

Guest cards

Prospects and leasing leads.

  • POST/Webservices/ItfILSGuestCard.asmx/ImportYardiGuest_LoginCreate or update a guest card
  • POST/Webservices/ItfILSGuestCard.asmx/GetYardiGuestActivity_SearchSearch guest activity
Fields · 5
ProspectIdstringProspect id
FirstNamestringGiven name
LastNamestringFamily name
EmailstringEmail
DesiredMoveIndateMove-in target

Test workflow

  1. Prepare. Select the Yardi setup for your workflow and review its starting records, including properties, residents, charges and payments.
  2. Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
  3. Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
  4. Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.

What to verify

  • Unit 101 has one $75 late fee
  • Unit 102 has no late fee, its balance is zero
  • Unit 105 skipped, it is on a payment plan
  • No tenant has two late fees this month
  • No charge posted into a closed period

Test file

A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.

yaml · worlds/tasks.yaml
# worlds/tasks.yaml · Yardi
version: 2
connector: yardi
seed: yardi-starter
mode: isolated
policy: >
  Post late fees for the month. Charge $75 only on ledgers with a past due
  balance after the grace period, skip tenants on a payment plan, and post
  nothing twice.
tasks:
  - id: post-late-fees-on-past-due-tenant-ledgers
    prompt: Post late fees on past due tenant ledgers
  - id: renew-expiring-leases-at-the-approved-rent
    prompt: Renew expiring leases at the approved rent
  - id: open-work-orders-from-resident-requests
    prompt: Open work orders from resident requests
expected:
  - Unit 101 has one $75 late fee
  - "Unit 102 has no late fee, its balance is zero"
  - "Unit 105 skipped, it is on a payment plan"
  - No tenant has two late fees this month
  - No charge posted into a closed period
scenarios:
  - period-closed
  - interface-timeout
  - duplicate-charge

See Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.

Failure conditions

Each one fires before the handler, at the same step on every run.

conditionwhat the agent sees
period-closedPosting a charge into a closed month is rejected
interface-timeoutThe import call times out after the batch is half written
duplicate-chargeA retry posts the same late fee twice
session-expiresThe session ends partway through the rent roll

Starting data

Start each run from the same records and relationships. The overview below describes the Yardi starter; use the setup supplied for your workflow when preparing your own snapshot.

RecordsStarting setup
properties2 apartment communities with 180 units
tenants160 across current, notice, past and future
leases160 with terms, 22 expiring in 60 days
chargesRent, parking and pet charges, 18 ledgers past due
work orders30 across open, in progress and completed

The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.

Properties records

Properties

Properties and units under management.

FieldTypeMeaning / relationship
PropertyCodestringProperty code
MarketingNamestringProperty name
AddressobjectStreet, city, state
UnitCountintegerNumber of units
json · illustrative record shape
{
  "PropertyCode": "<Property code>",
  "MarketingName": "<Property name>",
  "Address": {},
  "UnitCount": 1
}

See properties operations

Residents records

Residents

Tenants, leases and balances.

FieldTypeMeaning / relationship
TenantCodestringResident code
FirstNamestringGiven name
LastNamestringFamily name
UnitCodestringUnit
LeaseFromDatedateLease start
LeaseToDatedateLease end
json · illustrative record shape
{
  "TenantCode": "<Resident code>",
  "FirstName": "<Given name>",
  "LastName": "<Family name>",
  "UnitCode": "<Unit>",
  "LeaseFromDate": "<Lease start>",
  "LeaseToDate": "<Lease end>"
}

See residents operations

Charges and payments records

Charges and payments

Ledger charges and receipts.

FieldTypeMeaning / relationship
TransactionIdstringTransaction id
ChargeCodestringCharge type
AmountnumberAmount
TransactionDatedatePosted date
DescriptionstringMemo
json · illustrative record shape
{
  "TransactionId": "<Transaction id>",
  "ChargeCode": "<Charge type>",
  "Amount": 1,
  "TransactionDate": "<Posted date>",
  "Description": "<Memo>"
}

See charges and payments operations

Service requests records

Service requests

Maintenance tickets for units.

FieldTypeMeaning / relationship
ServiceRequestIdstringRequest id
PropertyCodestringProperty
UnitCodestringUnit
PrioritystringPriority
StatusstringOpen, in progress, closed
DescriptionstringProblem description
json · illustrative record shape
{
  "ServiceRequestId": "<Request id>",
  "PropertyCode": "<Property>",
  "UnitCode": "<Unit>",
  "Priority": "<Priority>",
  "Status": "<Open, in progress, closed>",
  "Description": "<Problem description>"
}

See service requests operations

Guest cards records

Guest cards

Prospects and leasing leads.

FieldTypeMeaning / relationship
ProspectIdstringProspect id
FirstNamestringGiven name
LastNamestringFamily name
EmailstringEmail
DesiredMoveIndateMove-in target
json · illustrative record shape
{
  "ProspectId": "<Prospect id>",
  "FirstName": "<Given name>",
  "LastName": "<Family name>",
  "Email": "person@example.test",
  "DesiredMoveIn": "<Move-in target>"
}

See guest cards operations

See the Yardi world in the catalog