> ## Documentation Index
> Fetch the complete documentation index at: https://docs.theguarantors.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update an invite

> Updates the property, unit, coverage level, lease terms, or metadata of an invite. Only fields present in the request are changed. An invite can be amended as long as it hasn't been canceled, expired, or converted into an application. Changing only metadata doesn't send an invite.updated webhook.



## OpenAPI

````yaml /openapi/application-api.json patch /v1/invites/{id}
openapi: 3.1.0
info:
  description: >-
    Partner API for creating invites, tracking applications, and retrieving
    bonds.
  title: TheGuarantors Application API
  contact: {}
  version: '1.0'
servers:
  - url: https://api.theguarantors.com
security: []
paths:
  /v1/invites/{id}:
    patch:
      tags:
        - Invites
      summary: Update an invite
      description: >-
        Updates the property, unit, coverage level, lease terms, or metadata of
        an invite. Only fields present in the request are changed. An invite can
        be amended as long as it hasn't been canceled, expired, or converted
        into an application. Changing only metadata doesn't send an
        invite.updated webhook.
      parameters:
        - description: Invite ID
          name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchInviteRequest'
            example:
              coverage_level: medium
              lease:
                end_date: '2027-08-31'
                monthly_rent: 160000
        description: Fields to update
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invite'
              example:
                id: inv_8f3k2jd9slq02mxp
                status: created
                property_id: prop_nvlbcx2e5jk0fqsf
                application_id: null
                obligee: Acme Property Management LLC
                lease:
                  start_date: '2026-03-01'
                  end_date: '2027-08-31'
                  monthly_rent: 160000
                  prepaid_rent_amount: 120000
                  free_rent_amount: 10000
                  unit_address:
                    line1: 123 Main St
                    line2: Apt 5B
                    city: New York
                    state: NY
                    postal_code: '10001'
                    object: address
                  object: lease
                invite_recipients:
                  - id: ivre_q7ghmgtaavp37krc
                    link: >-
                      https://qualify.sandbox.theguarantors.com/invite/sign-up/ivre_q7ghmgtaavp37krc
                    first_name: Jane
                    last_name: Doe
                    email: jane.doe@example.com
                    phone_number: '+12125551234'
                    metadata: {}
                    object: invite_recipient
                metadata: {}
                object: invite
        '400':
          description: >-
            Bad Request


            | `error_code` | When |

            | --- | --- |

            | `invalid_request` | The body is not valid JSON, or a field has the
            wrong type |

            | `validation_error` | The request failed validation; see
            field_errors |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - invalid_request
                      - validation_error
                  field_errors:
                    type: array
                    items:
                      $ref: '#/components/schemas/FieldError'
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: >-
                  validation error: coverage_level: coverage_level must be one
                  of low, medium, high.
                error_code: validation_error
                field_errors:
                  - field: coverage_level
                    code: invalid_value
                    message: coverage_level must be one of low, medium, high
                object: error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                message: Missing authorization header
                object: error
        '403':
          description: >-
            Forbidden


            | `error_code` | When |

            | --- | --- |

            | `invite_property_inactive` | The invite's own property is inactive
            |

            | `target_property_inactive` | The submitted property_id is inactive
            |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - invite_property_inactive
                      - target_property_inactive
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: cannot move invite, the new property is inactive
                error_code: target_property_inactive
                object: error
        '404':
          description: |-
            Not Found

            | `error_code` | When |
            | --- | --- |
            | `invite_not_found` | The invite was not found |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - invite_not_found
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: invite not found
                error_code: invite_not_found
                object: error
        '409':
          description: >-
            Conflict


            | `error_code` | When |

            | --- | --- |

            | `invite_accepted` | A recipient has already accepted the invite |

            | `invite_application_started` | The invite is in the process of
            being converted into an application |

            | `invite_canceled` | The invite has been canceled |

            | `invite_expired` | The invite has expired |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - invite_accepted
                      - invite_application_started
                      - invite_canceled
                      - invite_expired
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: cannot amend invite, a recipient has already accepted it
                error_code: invite_accepted
                object: error
        '422':
          description: >-
            Unprocessable Entity


            | `error_code` | When |

            | --- | --- |

            | `property_not_found` | The property was not found |

            | `unit_not_found` | The unit was not found |

            | `unit_not_on_property` | The unit does not belong to the property
            |

            | `invalid_address` | The address failed validation |

            | `invalid_lease_date_range` | The lease end date isn't after the
            start date |

            | `locality_change_requires_property_id` | The city, state, or
            postal_code were changed without a new property_id |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - property_not_found
                      - unit_not_found
                      - unit_not_on_property
                      - invalid_address
                      - invalid_lease_date_range
                      - locality_change_requires_property_id
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: property not found
                error_code: property_not_found
                object: error
        '429':
          description: Rate limit exceeded
        '500':
          description: |-
            Internal Server Error

            | `error_code` | When |
            | --- | --- |
            | `internal_error` | An unexpected server error occurred |
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - object
                  - error_code
                properties:
                  error_code:
                    type: string
                    enum:
                      - internal_error
                  message:
                    type: string
                  object:
                    type: string
                    example: error
              example:
                message: unable to update invite
                error_code: internal_error
                object: error
      security:
        - BasicAuth: []
components:
  schemas:
    PatchInviteRequest:
      type: object
      properties:
        coverage_level:
          description: >-
            Change the coverage tier for the bond, which sets the number of
            months of rent it protects, from `low` (lowest) to `high` (highest).
            It is resolved to a coverage package using the coverages set up for
            the property, and every tier is subject to property support and
            applicant screening.
          type: string
          enum:
            - low
            - medium
            - high
          example: medium
        lease:
          $ref: '#/components/schemas/PatchLeaseRequest'
        metadata:
          description: >-
            Key-value object. Replaces the existing metadata in full; send
            `null` to clear it. Each key must be a string, and values can be
            strings, numbers, booleans, or null.
          type: object
          nullable: true
        property_id:
          description: >-
            Move the invite to a different property. Must be sent together with
            `unit_id` or a complete `lease.unit_address`.
          type: string
          example: prop_ve2x7i0j6psdizy7
        unit_id:
          description: >-
            Move the invite to a different unit. Can't be sent together with
            `lease.unit_address`.
          type: string
          example: unit_u7yr0vt3r9yk0c
    Invite:
      type: object
      required:
        - id
        - invite_recipients
        - lease
        - object
        - property_id
        - status
      properties:
        application_id:
          type: string
          example: sd_01HQ8Z
          nullable: true
        id:
          type: string
          example: inv_01HQ8X
        invite_recipients:
          type: array
          items:
            $ref: '#/components/schemas/InviteRecipient'
        lease:
          description: >-
            The legal contract between a property manager and the tenant, as
            represented on invites. Identical to Lease, plus rent concession
            fields that are accepted when creating an invite and returned on
            invite responses. One of unit_address or unit_id is required.
          allOf:
            - $ref: '#/components/schemas/InviteLease'
        metadata:
          description: >-
            Optional key-value object. Use this field to include internal
            references, identifiers, or any additional data that helps link this
            lease to your internal system. Each key must be a string, and values
            can be strings, numbers, booleans, or null.
          type: object
          nullable: true
        object:
          type: string
          example: invite
        obligee:
          description: >-
            The party that will be the obligee/claimant on the surety bond. This
            can be a limited liability company (LLC), a property management
            company, the property name, or the legal name of a sole proprietor
            owner.
          type: string
          example: Rivermark Residential LLC
          nullable: true
        property_id:
          type: string
          example: prop_01HQ7A
        status:
          type: string
          enum:
            - created
            - accepted
            - canceled
            - expired
          example: accepted
    FieldError:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/FieldErrorCode'
        field:
          type: string
          example: lease.start_date
        message:
          type: string
          example: must be in YYYY-MM-DD format
    ErrorResponse:
      type: object
      required:
        - message
        - object
      properties:
        message:
          type: string
          example: invite not found
        object:
          type: string
          example: error
    PatchLeaseRequest:
      type: object
      properties:
        end_date:
          description: YYYY-MM-DD. Must be after `start_date`.
          type: string
          format: date
          example: '2027-08-31'
        free_rent_amount:
          description: Free rent amount in cents.
          type: integer
          maximum: 5000000
          minimum: 0
          example: 0
        monthly_rent:
          description: Monthly rent in cents.
          type: integer
          minimum: 1
          example: 160000
        prepaid_rent_amount:
          description: Prepaid rent amount in cents.
          type: integer
          maximum: 5000000
          minimum: 0
          example: 0
        start_date:
          description: YYYY-MM-DD
          type: string
          format: date
          example: '2026-03-01'
        unit_address:
          description: >-
            Can't be sent together with `unit_id`. Changing `city`, `state` or
            `postal_code` also requires a new `property_id`.
          allOf:
            - $ref: '#/components/schemas/PatchAddressRequest'
    InviteRecipient:
      type: object
      required:
        - email
        - first_name
        - id
        - last_name
        - link
        - object
      properties:
        email:
          type: string
          format: email
          example: dana.whitfield@example.com
        first_name:
          type: string
          example: Dana
        id:
          type: string
          example: ivre_01HQ8Y
        last_name:
          type: string
          example: Whitfield
        link:
          description: >-
            URL that links the prospective renter to their prefilled
            TheGuarantors application.
          type: string
          format: uri
          example: https://qualify.theguarantors.com/invite/sign-up/k3v9q2m7x1p4r8tz
        metadata:
          type: object
          nullable: true
        object:
          type: string
          example: invite_recipient
        phone_number:
          description: >-
            Phone number in E.164 format, for example `+12125551234`. Spaces and
            formatting characters such as parentheses, dashes and dots are
            removed. A 10-digit number without a country code is treated as a US
            number and gets `+1` added. Include the `+` and country code for any
            other number.
          type: string
          example: '+15551234567'
          nullable: true
    InviteLease:
      type: object
      required:
        - monthly_rent
        - object
        - unit_address
      properties:
        end_date:
          description: The date when this lease expires.
          type: string
          format: date
          example: '2027-08-31'
          nullable: true
        free_rent_amount:
          description: The amount of free rent (in cents) granted to the applicant.
          type: integer
          maximum: 5000000
          minimum: 0
          example: 0
        monthly_rent:
          description: Monthly rent in cents.
          type: integer
          minimum: 1
          example: 280000
        object:
          type: string
          example: lease
        prepaid_rent_amount:
          description: The amount of rent (in cents) paid in advance.
          type: integer
          maximum: 5000000
          minimum: 0
          example: 0
        start_date:
          description: The date when this lease takes effect.
          type: string
          format: date
          example: '2026-09-01'
          nullable: true
        unit_address:
          description: >-
            The unit address that would be printed on the lease, and therefore
            the Lease Guarantee surety bond. If you do not store the address
            with separate address line 1s and address line 2, put the full unit
            address in the address line 1.
          allOf:
            - $ref: '#/components/schemas/Address'
    FieldErrorCode:
      type: string
      enum:
        - required
        - invalid_format
        - invalid_value
        - out_of_range
        - invalid_length
        - invalid_date_range
        - unknown_field
        - null_not_allowed
        - unsupported_field_edit
        - ambiguous_edit
        - incomplete_edit
        - invalid
      x-enum-comments:
        FieldCodeAmbiguousEdit: The field conflicts with another field in the same request
        FieldCodeIncompleteEdit: The field requires another field in the same request
        FieldCodeInvalid: The value is invalid for any other reason
        FieldCodeInvalidDateRange: end_date is not after start_date
        FieldCodeInvalidFormat: The value is not in the expected format (email, phone, date, id)
        FieldCodeInvalidLength: The value is too short or too long
        FieldCodeInvalidValue: The value is not one of the allowed values
        FieldCodeNullNotAllowed: null is not accepted at this path
        FieldCodeOutOfRange: The number is outside the allowed range
        FieldCodeRequired: The field is missing or blank
        FieldCodeUnknownField: The field is not recognized
        FieldCodeUnsupportedFieldEdit: The field cannot be edited on this invite or recipient entry
      x-enum-descriptions:
        - The field is missing or blank
        - The value is not in the expected format (email, phone, date, id)
        - The value is not one of the allowed values
        - The number is outside the allowed range
        - The value is too short or too long
        - end_date is not after start_date
        - The field is not recognized
        - null is not accepted at this path
        - The field cannot be edited on this invite or recipient entry
        - The field conflicts with another field in the same request
        - The field requires another field in the same request
        - The value is invalid for any other reason
      x-enum-varnames:
        - FieldCodeRequired
        - FieldCodeInvalidFormat
        - FieldCodeInvalidValue
        - FieldCodeOutOfRange
        - FieldCodeInvalidLength
        - FieldCodeInvalidDateRange
        - FieldCodeUnknownField
        - FieldCodeNullNotAllowed
        - FieldCodeUnsupportedFieldEdit
        - FieldCodeAmbiguousEdit
        - FieldCodeIncompleteEdit
        - FieldCodeInvalid
    PatchAddressRequest:
      type: object
      properties:
        city:
          type: string
          minLength: 1
          example: New York
        line1:
          type: string
          minLength: 1
          example: 123 Main St
        line2:
          type: string
          example: Apt 2B
          nullable: true
        postal_code:
          type: string
          minLength: 1
          example: '10001'
        state:
          type: string
          minLength: 1
          example: NY
    Address:
      type: object
      required:
        - city
        - line1
        - object
        - postal_code
        - state
      properties:
        city:
          description: City which this address is located in
          type: string
          example: Brooklyn
        line1:
          description: Address line 1
          type: string
          example: 412 Halsey St
        line2:
          description: Address line 2
          type: string
          example: Apt 3R
          nullable: true
        object:
          type: string
          example: address
        postal_code:
          description: Postal or Zip code for this address
          type: string
          example: '11233'
        state:
          description: State which this address is located in
          type: string
          example: NY
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic

````