Property Maintenance API Documentation

Read supplied repair requests, quotes, and invoices, and flag safety keywords for a person without calling a property safe. Payment is the exact USDC price on Base with x402.

POSThttps://brainiac.software/api/v1/property-maintenance/request-classify$0.04 USDC

Classify a maintenance request

Classify a stated type only from an explicit token, and flag a documented safety keyword for a person to review. An unrecognized word is left unrecognized.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "text": "Request: M-1 | 10 Example Street | 2026-11-01 | | leak | routine | drip under the sink\nRequest: M-2 | 10 Example Street | 2026-11-02 | | erase | | gas smell in the kitchen\nThe tenant is angry.\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "classified",
  "items": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "reported": "2026-11-01",
      "type": "leak",
      "category": "plumbing",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "escalation": "none",
      "confirmed": false,
      "propertySafe": false,
      "interpretation": "stated"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "reported": "2026-11-02",
      "type": "erase",
      "category": "unrecognized",
      "urgency": "not_stated",
      "safety": true,
      "keyword": "gas",
      "escalation": "human",
      "confirmed": false,
      "propertySafe": false,
      "interpretation": "stated"
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [
    {
      "kind": "ignored",
      "code": "unlabeled_line",
      "subject": "",
      "detail": "Lines without a recognized label were not read and their text was not copied."
    },
    {
      "kind": "observation",
      "code": "safety_keyword",
      "subject": "M-2",
      "detail": "The supplied text contains \"gas\". A person should review it. This is not a finding that the property is unsafe."
    }
  ],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/request-classify" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "text": "Request: M-1 | 10 Example Street | 2026-11-01 | | leak | routine | drip under the sink\nRequest: M-2 | 10 Example Street | 2026-11-02 | | erase | | gas smell in the kitchen\nThe tenant is angry.\n"
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/priority-assess$0.04 USDC

Assess maintenance priority

Apply a fixed order: a safety keyword, then a stated emergency, urgent, or routine urgency. A missing urgency is not treated as routine, and the result is not a safety verdict.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "requests": [
    {
      "id": "M-1",
      "type": "leak",
      "urgency": "routine",
      "text": "drip under the sink"
    },
    {
      "id": "M-2",
      "type": "erase",
      "text": "gas smell in the kitchen"
    },
    {
      "id": "M-3",
      "text": "paint the hall"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "assessed",
  "items": [
    {
      "id": "M-1",
      "priority": "routine",
      "rule": "stated_routine",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "propertySafe": false
    },
    {
      "id": "M-2",
      "priority": "escalate",
      "rule": "safety_keyword",
      "urgency": "not_stated",
      "safety": true,
      "keyword": "gas",
      "propertySafe": false
    },
    {
      "id": "M-3",
      "priority": "not_assessed",
      "rule": "not_assessed",
      "urgency": "not_stated",
      "safety": false,
      "keyword": "",
      "propertySafe": false
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/priority-assess" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "requests": [
    {
      "id": "M-1",
      "type": "leak",
      "urgency": "routine",
      "text": "drip under the sink"
    },
    {
      "id": "M-2",
      "type": "erase",
      "text": "gas smell in the kitchen"
    },
    {
      "id": "M-3",
      "text": "paint the hall"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/work-order-generate$0.05 USDC

Draft a maintenance work order

Write a draft from the stated property, type, issue, and contractor name. The draft is not sent and no contractor is dispatched.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip under the sink"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "drafted",
  "orders": [
    {
      "requestId": "M-1",
      "property": "10 Example Street",
      "contractor": "",
      "sent": false,
      "text": "Request M-1. Property: 10 Example Street. Stated type: leak (plumbing). Stated issue: drip under the sink. Stated urgency: routine. This draft was not sent and no contractor was dispatched."
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/work-order-generate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip under the sink"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/contractor-quote-compare$0.05 USDC

Compare contractor quotes

Compare supplied quotes by price, stated completion days, scope, and exclusions. The lowest price is not a recommendation, and different currencies are not converted.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "quotes": [
    {
      "id": "Q-1",
      "requestId": "M-1",
      "contractor": "North Trades",
      "amount": 200,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap",
      "exclusions": "parts"
    },
    {
      "id": "Q-2",
      "requestId": "M-1",
      "contractor": "South Trades",
      "amount": 150,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "compared",
  "groups": [
    {
      "requestId": "M-1",
      "price": "compared",
      "time": "tied",
      "scope": "same",
      "quotes": [
        {
          "id": "Q-1",
          "contractor": "North Trades",
          "amount": 200,
          "amountSupplied": true,
          "currency": "USD",
          "days": 5,
          "daysSupplied": true,
          "scope": "replace trap",
          "exclusions": "parts",
          "lowest": false,
          "shortest": false,
          "recommended": false
        },
        {
          "id": "Q-2",
          "contractor": "South Trades",
          "amount": 150,
          "amountSupplied": true,
          "currency": "USD",
          "days": 5,
          "daysSupplied": true,
          "scope": "replace trap",
          "exclusions": "",
          "lowest": true,
          "shortest": false,
          "recommended": false
        }
      ]
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/contractor-quote-compare" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "quotes": [
    {
      "id": "Q-1",
      "requestId": "M-1",
      "contractor": "North Trades",
      "amount": 200,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap",
      "exclusions": "parts"
    },
    {
      "id": "Q-2",
      "requestId": "M-1",
      "contractor": "South Trades",
      "amount": 150,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/response-sla-check$0.04 USDC

Check a response service level

Compare a supplied response time with the service level for that stated urgency. No deadline is assumed when the caller does not supply one.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "slas": [
    {
      "urgency": "emergency",
      "limit": 4,
      "unit": "hours"
    }
  ],
  "requests": [
    {
      "id": "M-1",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00Z",
      "responded": "2026-11-01T16:00:00Z"
    },
    {
      "id": "M-2",
      "urgency": "routine",
      "reported": "2026-11-01",
      "responded": "2026-11-02"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "checked",
  "items": [
    {
      "id": "M-1",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00.000Z",
      "responded": "2026-11-01T16:00:00.000Z",
      "asOfUsed": false,
      "limit": 4,
      "unit": "hours",
      "elapsed": 6,
      "elapsedSupplied": true,
      "state": "outside",
      "legalCompliance": false
    },
    {
      "id": "M-2",
      "urgency": "routine",
      "reported": "2026-11-01",
      "responded": "2026-11-02",
      "asOfUsed": false,
      "limit": 0,
      "unit": "",
      "elapsed": 0,
      "elapsedSupplied": false,
      "state": "not_checked",
      "legalCompliance": false
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [
    {
      "kind": "unavailable",
      "code": "sla_missing",
      "subject": "M-2",
      "detail": "No supplied service level matches this stated urgency. No deadline was assumed."
    }
  ],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/response-sla-check" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "slas": [
    {
      "urgency": "emergency",
      "limit": 4,
      "unit": "hours"
    }
  ],
  "requests": [
    {
      "id": "M-1",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00Z",
      "responded": "2026-11-01T16:00:00Z"
    },
    {
      "id": "M-2",
      "urgency": "routine",
      "reported": "2026-11-01",
      "responded": "2026-11-02"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/repair-history-analyze$0.04 USDC

Analyze repair history

Count supplied requests for the same property and type. A repeat is reported at three or more. The count is not a finding that the property is unsafe.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-3",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-4",
      "property": "10 Example Street",
      "type": "pest"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "analyzed",
  "items": [
    {
      "property": "10 Example Street",
      "type": "plumbing",
      "category": "plumbing",
      "count": 3,
      "pattern": true,
      "requests": [
        "M-1",
        "M-2",
        "M-3"
      ],
      "propertySafe": false
    },
    {
      "property": "10 Example Street",
      "type": "pest",
      "category": "pest",
      "count": 1,
      "pattern": false,
      "requests": [
        "M-4"
      ],
      "propertySafe": false
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/repair-history-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-3",
      "property": "10 Example Street",
      "type": "leak"
    },
    {
      "id": "M-4",
      "property": "10 Example Street",
      "type": "pest"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/invoice-validate$0.04 USDC

Validate a maintenance invoice

Compare an invoice amount and scope with one linked quote. A difference is not an overcharge finding, and a stated paid status does not mean a payment was sent.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "quotes": [
    {
      "id": "Q-1",
      "amount": 150,
      "currency": "USD",
      "scope": "replace trap"
    }
  ],
  "invoices": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "amount": 180,
      "currency": "USD",
      "scope": "replace trap",
      "status": "submitted"
    },
    {
      "id": "I-2",
      "quoteId": "Q-9",
      "amount": 180,
      "currency": "USD",
      "scope": "replace trap",
      "status": "paid"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "checked",
  "items": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "status": "submitted",
      "currency": "USD",
      "invoiceAmount": 180,
      "invoiceSupplied": true,
      "quoteAmount": 150,
      "quoteSupplied": true,
      "amountState": "above",
      "scopeState": "same",
      "paymentSent": false,
      "legalCompliance": false
    },
    {
      "id": "I-2",
      "quoteId": "Q-9",
      "status": "paid",
      "currency": "USD",
      "invoiceAmount": 180,
      "invoiceSupplied": true,
      "quoteAmount": 0,
      "quoteSupplied": false,
      "amountState": "not_compared",
      "scopeState": "not_compared",
      "paymentSent": false,
      "legalCompliance": false
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [
    {
      "kind": "unavailable",
      "code": "quote_missing",
      "subject": "I-2",
      "detail": "No single supplied quote is linked, so the invoice amount was not compared."
    }
  ],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/invoice-validate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "quotes": [
    {
      "id": "Q-1",
      "amount": 150,
      "currency": "USD",
      "scope": "replace trap"
    }
  ],
  "invoices": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "amount": 180,
      "currency": "USD",
      "scope": "replace trap",
      "status": "submitted"
    },
    {
      "id": "I-2",
      "quoteId": "Q-9",
      "amount": 180,
      "currency": "USD",
      "scope": "replace trap",
      "status": "paid"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/property-maintenance/report$0.12 USDC

Report property maintenance

Combine supplied request classes, safety keywords, quote comparisons, service levels, repeat repairs, and invoice differences. The report does not call a property safe or dispatch a contractor.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
requestsNoarray; Array
quotesNoarray; Array
invoicesNoarray; Array
slasNoarray; Array
worksNoarray; Array
asOfNostring
rulesNoarray; Array

Request exampleJSON

{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00Z",
      "responded": "2026-11-01T16:00:00Z",
      "text": "gas smell in the kitchen"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip"
    },
    {
      "id": "M-3",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip"
    }
  ],
  "quotes": [
    {
      "id": "Q-1",
      "requestId": "M-1",
      "contractor": "North Trades",
      "amount": 200,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    },
    {
      "id": "Q-2",
      "requestId": "M-1",
      "contractor": "South Trades",
      "amount": 150,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    }
  ],
  "invoices": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "amount": 250,
      "currency": "USD",
      "scope": "replace trap",
      "status": "submitted"
    }
  ],
  "slas": [
    {
      "urgency": "emergency",
      "limit": 4,
      "unit": "hours"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T13:00:00.000Z",
  "status": "reported",
  "requestCount": 3,
  "safetyCount": 1,
  "escalateCount": 1,
  "outsideCount": 1,
  "patternCount": 1,
  "invoiceDifferenceCount": 1,
  "items": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "reported": "2026-11-01T10:00:00.000Z",
      "type": "leak",
      "category": "plumbing",
      "urgency": "emergency",
      "safety": true,
      "keyword": "gas",
      "escalation": "human",
      "confirmed": false,
      "propertySafe": false,
      "interpretation": "stated"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "reported": "",
      "type": "leak",
      "category": "plumbing",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "escalation": "none",
      "confirmed": false,
      "propertySafe": false,
      "interpretation": "stated"
    },
    {
      "id": "M-3",
      "property": "10 Example Street",
      "reported": "",
      "type": "leak",
      "category": "plumbing",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "escalation": "none",
      "confirmed": false,
      "propertySafe": false,
      "interpretation": "stated"
    }
  ],
  "priorities": [
    {
      "id": "M-1",
      "priority": "escalate",
      "rule": "safety_keyword",
      "urgency": "emergency",
      "safety": true,
      "keyword": "gas",
      "propertySafe": false
    },
    {
      "id": "M-2",
      "priority": "routine",
      "rule": "stated_routine",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "propertySafe": false
    },
    {
      "id": "M-3",
      "priority": "routine",
      "rule": "stated_routine",
      "urgency": "routine",
      "safety": false,
      "keyword": "",
      "propertySafe": false
    }
  ],
  "orders": [
    {
      "requestId": "M-1",
      "property": "10 Example Street",
      "contractor": "",
      "sent": false,
      "text": "Request M-1. Property: 10 Example Street. Stated type: leak (plumbing). Stated issue: gas smell in the kitchen. Stated urgency: emergency. The supplied text contains \"gas\". A person should review it. This draft was not sent and no contractor was dispatched."
    },
    {
      "requestId": "M-2",
      "property": "10 Example Street",
      "contractor": "",
      "sent": false,
      "text": "Request M-2. Property: 10 Example Street. Stated type: leak (plumbing). Stated issue: drip. Stated urgency: routine. This draft was not sent and no contractor was dispatched."
    },
    {
      "requestId": "M-3",
      "property": "10 Example Street",
      "contractor": "",
      "sent": false,
      "text": "Request M-3. Property: 10 Example Street. Stated type: leak (plumbing). Stated issue: drip. Stated urgency: routine. This draft was not sent and no contractor was dispatched."
    }
  ],
  "groups": [
    {
      "requestId": "M-1",
      "price": "compared",
      "time": "tied",
      "scope": "same",
      "quotes": [
        {
          "id": "Q-1",
          "contractor": "North Trades",
          "amount": 200,
          "amountSupplied": true,
          "currency": "USD",
          "days": 5,
          "daysSupplied": true,
          "scope": "replace trap",
          "exclusions": "",
          "lowest": false,
          "shortest": false,
          "recommended": false
        },
        {
          "id": "Q-2",
          "contractor": "South Trades",
          "amount": 150,
          "amountSupplied": true,
          "currency": "USD",
          "days": 5,
          "daysSupplied": true,
          "scope": "replace trap",
          "exclusions": "",
          "lowest": true,
          "shortest": false,
          "recommended": false
        }
      ]
    }
  ],
  "service": [
    {
      "id": "M-1",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00.000Z",
      "responded": "2026-11-01T16:00:00.000Z",
      "asOfUsed": false,
      "limit": 4,
      "unit": "hours",
      "elapsed": 6,
      "elapsedSupplied": true,
      "state": "outside",
      "legalCompliance": false
    },
    {
      "id": "M-2",
      "urgency": "routine",
      "reported": "",
      "responded": "",
      "asOfUsed": false,
      "limit": 0,
      "unit": "",
      "elapsed": 0,
      "elapsedSupplied": false,
      "state": "not_checked",
      "legalCompliance": false
    },
    {
      "id": "M-3",
      "urgency": "routine",
      "reported": "",
      "responded": "",
      "asOfUsed": false,
      "limit": 0,
      "unit": "",
      "elapsed": 0,
      "elapsedSupplied": false,
      "state": "not_checked",
      "legalCompliance": false
    }
  ],
  "history": [
    {
      "property": "10 Example Street",
      "type": "plumbing",
      "category": "plumbing",
      "count": 3,
      "pattern": true,
      "requests": [
        "M-1",
        "M-2",
        "M-3"
      ],
      "propertySafe": false
    }
  ],
  "invoices": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "status": "submitted",
      "currency": "USD",
      "invoiceAmount": 250,
      "invoiceSupplied": true,
      "quoteAmount": 200,
      "quoteSupplied": true,
      "amountState": "above",
      "scopeState": "same",
      "paymentSent": false,
      "legalCompliance": false
    }
  ],
  "contractorDispatched": false,
  "tenantContacted": false,
  "propertySafe": false,
  "legalCompliance": false,
  "workOrdered": false,
  "findings": [
    {
      "kind": "observation",
      "code": "safety_keyword",
      "subject": "M-1",
      "detail": "The supplied text contains \"gas\". A person should review it. This is not a finding that the property is unsafe."
    },
    {
      "kind": "unavailable",
      "code": "sla_missing",
      "subject": "M-2",
      "detail": "No supplied service level matches this stated urgency. No deadline was assumed."
    },
    {
      "kind": "unavailable",
      "code": "sla_missing",
      "subject": "M-3",
      "detail": "No supplied service level matches this stated urgency. No deadline was assumed."
    }
  ],
  "limitations": [
    "Requests, quotes, invoices, and service levels are copied only from labeled fields supplied by the caller.",
    "A type is classified only from an explicit token: leak, plumbing, pipe, drain, electrical, power, outlet, wiring, heat, heating, hvac, boiler, lock, door, access, appliance, pest, structural, roof, or ceiling.",
    "A safety flag is a keyword match for a person to review. It does not mean the property is unsafe or legally non-compliant.",
    "A quote comparison does not recommend a contractor. A work-order draft is not sent.",
    "No contractor is dispatched and no tenant is contacted."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/property-maintenance/report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "requests": [
    {
      "id": "M-1",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "emergency",
      "reported": "2026-11-01T10:00:00Z",
      "responded": "2026-11-01T16:00:00Z",
      "text": "gas smell in the kitchen"
    },
    {
      "id": "M-2",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip"
    },
    {
      "id": "M-3",
      "property": "10 Example Street",
      "type": "leak",
      "urgency": "routine",
      "text": "drip"
    }
  ],
  "quotes": [
    {
      "id": "Q-1",
      "requestId": "M-1",
      "contractor": "North Trades",
      "amount": 200,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    },
    {
      "id": "Q-2",
      "requestId": "M-1",
      "contractor": "South Trades",
      "amount": 150,
      "currency": "USD",
      "days": 5,
      "scope": "replace trap"
    }
  ],
  "invoices": [
    {
      "id": "I-1",
      "quoteId": "Q-1",
      "amount": 250,
      "currency": "USD",
      "scope": "replace trap",
      "status": "submitted"
    }
  ],
  "slas": [
    {
      "urgency": "emergency",
      "limit": 4,
      "unit": "hours"
    }
  ]
}
JSON