---
title: "Landlord Repair Request Packets: API schema and JSON request"
description: Collect tenant, rental property, repair-condition, prior-notice, deadline, landlord-recipient, signature, acknowledgement, and optional evidence inputs needed to generate and mail a repair request packet.
seotitle: Landlord Repair Request Packets API schema | PostalForm
seo-description: "Automate Landlord Repair Request Packets with PostalForm: field identifiers, recipient routing, attachments, a JSON request template and the guided browser workflow."
group: resources
indexable: true
llms: true
nav: false
schema: webpage
published: 2026-07-10
updated: 2026-07-10
path: /developers/forms/landlord-repair-request-packets
---
# Landlord Repair Request Packets: API schema and JSON request

Collect tenant, rental property, repair-condition, prior-notice, deadline, landlord-recipient, signature, acknowledgement, and optional evidence inputs needed to generate and mail a repair request packet.

## How does an agent prepare this form?
PostalForm uses the same workflow definition for this API reference and its guided browser form. Fetch the live schema, collect the active required fields and attachments, and validate the completed request. Review the generated PDF, resolved recipient, mailing service and price with the owner before authorizing payment.

## Submission and recipient rules
| Setting | Current workflow value |
| --- | --- |
| Form slug | `landlord-repair-request-packets` |
| Recipient mode | `user` |
| Certified Mail | optional |
| Base U.S. mail service | USPS First-Class Mail (`mail_class="standard"` in the API); not USPS Marketing Mail |
| Attachment total limit | 12 MB |
| Validate without payment | `POST /api/machine/orders/validate` or `POST /api/machine/mpp/orders/validate` |
| Machine order | `POST /api/machine/orders` (x402) or `POST /api/machine/mpp/orders` (MPP) |

Send a top-level `form` instead of `pdf` or `letter`; those three document sources are mutually exclusive. Workflow forms are letters, not postcards. The machine envelope requires buyer, sender and recipient fields. For predefined or computed recipients, the server binds the final recipient to the workflow rules. Inspect the resolved recipient returned by validation; do not substitute a convenient office address.

The template below is structural, not ready to submit: replace every placeholder, complete the active fields, omit unused optional attachments, and use the field options and visibility rules in the schema. Empty strings and unchecked checkboxes are not user answers. Never infer a signature, legal eligibility, factual declaration or consent from a default value.

## JSON request template
```json
{
  "request_id": "<new UUID; preserve on retry>",
  "buyer_name": "<buyer name>",
  "buyer_email": "<buyer email>",
  "sender_name": "<sender name>",
  "sender_address_type": "Manual",
  "sender_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "recipient_name": "<confirmed recipient name>",
  "recipient_address_type": "Manual",
  "recipient_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "mail_class": "standard",
  "double_sided": true,
  "color": false,
  "certified": false,
  "form": {
    "slug": "landlord-repair-request-packets",
    "fields": {
      "letter_date": "",
      "sender_name": "",
      "sender_email": "",
      "sender_phone": "",
      "sender_address": "",
      "recipient_name": "",
      "recipient_address": "",
      "rental_property_address": "",
      "include_lease_reference": false,
      "lease_or_account_number": "",
      "repair_problems": "",
      "problem_start_date": "",
      "prior_notice_was_given": false,
      "prior_notice_details": "",
      "health_or_safety_concern": false,
      "health_or_safety_concern_details": "",
      "requested_repair_date": "",
      "requested_response_date": "",
      "include_access_instructions": false,
      "access_instructions": "",
      "signature": "",
      "date_signed": "",
      "facts_acknowledged": false,
      "legal_limits_acknowledged": false
    },
    "attachments": [
      {
        "id": "photos_or_inspection_records",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      },
      {
        "id": "prior_correspondence",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      },
      {
        "id": "lease_or_policy_pages",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      },
      {
        "id": "other_supporting_documents",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      }
    ]
  }
}
```

## Field reference
| Field ID | Label | Type | Required when active | Choices |
| --- | --- | --- | --- | --- |
| `letter_date` | Letter date | date | Yes | See schema |
| `sender_name` | Tenant full name | text | Yes | See schema |
| `sender_email` | Tenant email (optional) | text | No | See schema |
| `sender_phone` | Tenant phone (optional) | text | No | See schema |
| `sender_address` | Tenant return address | address | Yes | See schema |
| `recipient_name` | Landlord, manager, or notice recipient | text | Yes | See schema |
| `recipient_address` | Recipient mailing address | address | Yes | See schema |
| `rental_property_address` | Rental property address | text | Yes | See schema |
| `include_lease_reference` | Include a lease or account reference | checkbox | No | See schema |
| `lease_or_account_number` | Lease or account number | text | No | See schema |
| `repair_problems` | Conditions needing repair | textarea | Yes | See schema |
| `problem_start_date` | Problem start date | date | Yes | See schema |
| `prior_notice_was_given` | Prior notice was given | checkbox | No | See schema |
| `prior_notice_details` | Prior notice details | textarea | Yes | See schema |
| `health_or_safety_concern` | Health or safety concern | checkbox | No | See schema |
| `health_or_safety_concern_details` | Health or safety concern details | textarea | Yes | See schema |
| `requested_repair_date` | Requested repair date | date | Yes | See schema |
| `requested_response_date` | Requested written-response date | date | Yes | See schema |
| `include_access_instructions` | Include access or scheduling instructions | checkbox | No | See schema |
| `access_instructions` | Access instructions | textarea | Yes | See schema |
| `signature` | Tenant signature | signature | Yes | See schema |
| `date_signed` | Date signed | date | Yes | See schema |
| `facts_acknowledged` | I reviewed the letter and confirm that its factual statements and dates are accurate. | checkbox | Yes | See schema |
| `legal_limits_acknowledged` | I understand this is a written repair request, not legal advice, and that state, local, and lease notice requirements may differ. | checkbox | Yes | See schema |

Compound fields use nested objects keyed by subfield ID. Evaluate group and field visibility before deciding which fields are active. Conditional requirements, validation rules, recipient rules, attachment formats and compliance policies are preserved in the complete schema below.

## Complete workflow schema
```json
{
  "schema_version": 1,
  "workflow_version": 1,
  "slug": "landlord-repair-request-packets",
  "name": "Landlord Repair Request Packets",
  "description": "Create a signed tenant repair request, attach supporting evidence, preview the packet, and mail it to a landlord or property manager.",
  "agent_summary": "Collect tenant, rental property, repair-condition, prior-notice, deadline, landlord-recipient, signature, acknowledgement, and optional evidence inputs needed to generate and mail a repair request packet.",
  "form_summary": "Use this guided workflow to document rental-property conditions, prior notice, requested repair and response dates, access details, and optional evidence in one mailed packet.",
  "data_collected": [
    "Tenant name, contact details, return address, and signature",
    "Landlord or property manager name and mailing address",
    "Rental property address and repair-condition details",
    "Problem start date, prior notice, requested repair date, response deadline, and access instructions",
    "Optional lease pages, photos, inspection records, prior correspondence, and repair estimates"
  ],
  "topics": [
    "renters",
    "landlord tenant",
    "repairs",
    "maintenance",
    "housing"
  ],
  "category": "guided_letter",
  "publish_state": "published",
  "aliases": [
    "landlord-repair-request-letter",
    "tenant-repair-request-letter",
    "habitability-repair-request"
  ],
  "llms": true,
  "indexable": true,
  "certified_mail": "optional",
  "recipient": {
    "mode": "user"
  },
  "checkout_flow": "forms_order",
  "published_at": "2026-07-10",
  "updated_at": "2026-07-10",
  "groups": [
    {
      "id": "sender",
      "label": "Tenant and return address",
      "description": "Provide the tenant details that should appear on the request and envelope.",
      "depends_on": []
    },
    {
      "id": "recipient",
      "label": "Landlord or property manager",
      "description": "Use the notice address in the lease or the current address designated for written notices.",
      "depends_on": []
    },
    {
      "id": "repairs",
      "label": "Property and repair facts",
      "description": "Describe each condition factually and include the dates and locations that will help the recipient act.",
      "depends_on": []
    },
    {
      "id": "request",
      "label": "Requested response",
      "description": "Set practical requested dates and provide optional access instructions.",
      "depends_on": []
    },
    {
      "id": "signature",
      "label": "Signature and review",
      "description": "Sign the letter and confirm the facts, address, and legal-information acknowledgements.",
      "depends_on": []
    }
  ],
  "fields": [
    {
      "id": "letter_date",
      "label": "Letter date",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "sender",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_name",
      "label": "Tenant full name",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "sender",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_email",
      "label": "Tenant email (optional)",
      "type": "text",
      "required": false,
      "meta_class": "email",
      "ui_width": "half",
      "group_id": "sender",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_phone",
      "label": "Tenant phone (optional)",
      "type": "text",
      "required": false,
      "meta_class": "phone",
      "ui_width": "half",
      "group_id": "sender",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_address",
      "label": "Tenant return address",
      "type": "address",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "sender",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_name",
      "label": "Landlord, manager, or notice recipient",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "recipient",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_address",
      "label": "Recipient mailing address",
      "type": "address",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "recipient",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "rental_property_address",
      "label": "Rental property address",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "include_lease_reference",
      "label": "Include a lease or account reference",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "lease_or_account_number",
      "label": "Lease or account number",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_lease_reference",
        "operator": "truthy"
      },
      "depends_on": [
        "include_lease_reference"
      ],
      "compound": null
    },
    {
      "id": "repair_problems",
      "label": "Conditions needing repair",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "problem_start_date",
      "label": "Problem start date",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "prior_notice_was_given",
      "label": "Prior notice was given",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "prior_notice_details",
      "label": "Prior notice details",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "prior_notice_was_given",
        "operator": "truthy"
      },
      "depends_on": [
        "prior_notice_was_given"
      ],
      "compound": null
    },
    {
      "id": "health_or_safety_concern",
      "label": "Health or safety concern",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "health_or_safety_concern_details",
      "label": "Health or safety concern details",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "repairs",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "health_or_safety_concern",
        "operator": "truthy"
      },
      "depends_on": [
        "health_or_safety_concern"
      ],
      "compound": null
    },
    {
      "id": "requested_repair_date",
      "label": "Requested repair date",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "request",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "requested_response_date",
      "label": "Requested written-response date",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "request",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "include_access_instructions",
      "label": "Include access or scheduling instructions",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "request",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "access_instructions",
      "label": "Access instructions",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "request",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_access_instructions",
        "operator": "truthy"
      },
      "depends_on": [
        "include_access_instructions"
      ],
      "compound": null
    },
    {
      "id": "signature",
      "label": "Tenant signature",
      "type": "signature",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "signature",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "date_signed",
      "label": "Date signed",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "signature",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "facts_acknowledged",
      "label": "I reviewed the letter and confirm that its factual statements and dates are accurate.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "signature",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "legal_limits_acknowledged",
      "label": "I understand this is a written repair request, not legal advice, and that state, local, and lease notice requirements may differ.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "signature",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    }
  ],
  "attachments": [
    {
      "id": "photos_or_inspection_records",
      "label": "Photos or inspection records",
      "required": false,
      "instructions": "Attach dated photos, inspection reports, work orders, or other copies that help identify the condition.",
      "allowed_types": [
        "pdf",
        "jpg",
        "jpeg",
        "png"
      ],
      "max_files": 12,
      "max_size_mb": 12
    },
    {
      "id": "prior_correspondence",
      "label": "Prior repair correspondence",
      "required": false,
      "instructions": "Attach copies of prior letters, emails, maintenance requests, or written responses.",
      "allowed_types": [
        "pdf",
        "jpg",
        "jpeg",
        "png"
      ],
      "max_files": 10,
      "max_size_mb": 12
    },
    {
      "id": "lease_or_policy_pages",
      "label": "Lease or maintenance-policy pages",
      "required": false,
      "instructions": "Attach only the relevant copies and keep your originals.",
      "allowed_types": [
        "pdf",
        "jpg",
        "jpeg",
        "png"
      ],
      "max_files": 6,
      "max_size_mb": 12
    },
    {
      "id": "other_supporting_documents",
      "label": "Other supporting documents",
      "required": false,
      "instructions": "Attach repair estimates, receipts, reports, or other relevant copies you want included.",
      "allowed_types": [
        "pdf",
        "jpg",
        "jpeg",
        "png"
      ],
      "max_files": 10,
      "max_size_mb": 12
    }
  ],
  "attachments_max_total_size_mb": 12,
  "machine_submission": {
    "payload_property": "form",
    "create_paths": {
      "x402": "/api/machine/orders",
      "mpp": "/api/machine/mpp/orders"
    }
  }
}
```

## Preview, payment and retries
Validation does not mail the document. For a human checkout, use MCP `postalform.create_form_order_draft` and present the returned preview, total and checkout URL. Machine API clients must handle the returned MPP or x402 challenge only within owner-approved spending authority. Preserve `request_id` and the exact payload for retries; changing the content requires a new request ID. After an uncertain payment, retrieve order status before creating another order. Provider handoff is not USPS delivery.


## Resources
- [All machine form schemas](/developers/forms)
- [Guided form](/forms/landlord-repair-request-packets)
- [Current JSON schema](/api/machine/forms/landlord-repair-request-packets/schema)
- [Machine order guide](/agents)
- [Pricing](/pricing)


## Ready to send it?
[Open guided form](/forms/landlord-repair-request-packets)
