Co-applicants

Invite a co-applicant

Creates a second rental application for someone applying alongside this applicant, links the two into a group, and emails the invitee a link to fill theirs in. Requires the rental_applications:write permission.

POST
https://services.magicdoor.com/leasing/company-portal/rental-applications/{applicationId}/co-applicants

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Path parameters

applicationIdstringrequired

The rental application to work with. A Snowflake id, sent as a decimal string.

example: 1830472847398404096

Body

application/json

firstNamestringrequired

The co-applicant's first name. Between 1 and 250 characters.

lastNamestringrequired

The co-applicant's last name. Between 1 and 250 characters.

emailstring · email

Where to send the invitation. Without a valid address the co-applicant is still created but no invitation goes out.

phonestring

The co-applicant's phone number.

messagestring

A personal note included in the invitation email. At most 2500 characters.

Response

200 · The co-applicant's own new rental application, in summary form. It is a fresh draft, so the stage is `draft`, `daysInStage` is `0` and `needs.kinds` is empty.

idstring

The co-applicant's rental application.

companyIdstring

The company that owns it.

statusenum<string>

Always draft on a fresh invite.

draftsubmittedretracted
submittedAtstring · date-time

Absent on a fresh invite.

decisionenum<string>

Always noDecision on a fresh invite.

noDecisionapprovedrejectedignored
isQualifiedDraftboolean

True, since an invite always carries a first and last name.

aiApplicationScoreinteger

Absent on a fresh invite.

screeningSummaryenum<string>

Always screeningNotCompleted on a fresh invite.

screeningNotCompletedscreeningCompletedreportsRequestedreportsAvailable
stageenum<string>

Always draft on a fresh invite.

draftsubmittedscreeneddecided
daysInStageinteger

Always 0 on a fresh invite.

needsobject

Attention buckets. Always empty on a fresh invite.

paymentStatusenum<string>

Absent on a fresh invite.

groupIdstring

The group tying the co-applicant to the original applicant. A UUID string.

firstNamestring

The co-applicant's first name.

lastNamestring

The co-applicant's last name.

emailstring · email

The co-applicant's email address.

phonestring

The co-applicant's phone number.

createdstring · date-time

When the invite was created, in the company's timezone.

updatedstring · date-time

When it last changed, in the company's timezone.

400 · The application you are inviting from has no first or last name of its own. Fill those in before inviting anyone.

401 · The access token is missing, expired, or not valid.

403 · The caller is authenticated but does not hold the `rental_applications:write` permission.

404 · No rental application with this id exists, or it belongs to another company. Both cases look identical so that ids cannot be probed across companies.

Allowed in every application status

This is not gated on the application's status — it works on a draft, on a submitted application, and on a retracted one. Only the applicant-facing portal locks an application once it is submitted.

A co-applicant is a separate application

The invitee gets their own rental application with its own id, screening, documents and decision. The two are tied together by a shared groupId, and each one lists the others under coApplicants.

Without an email address nothing is sent

The co-applicant's application is still created when the email address is missing or malformed — the invitation is simply skipped, and the call still succeeds. Check the address before you rely on the invite arriving.