Create a tenant
Creates a tenant and the MagicDoor sign-in that goes with them, and can send their portal invite in the same call. The response carries the password the tenant will sign in with — it is the only time you can read it.
Authorization
AuthorizationstringrequiredBody
application/json
Only firstName is required. Email and phone, if sent, must not already belong to another tenant in the company.
firstNamestringrequiredGiven name. 1 to 150 characters.
lastNamestringFamily name. 1 to 150 characters.
emailstring · emailEmail address. Up to 250 characters, and must be unique within the company.
phonestringPhone number. Must be a valid number and unique within the company.
languagestringISO 639-1 language code for messages to this tenant, for example en or es.
ssnstringSocial Security number. Validated as a federal id. Sending it stores a government identifier against the tenant.
driversLicenseobjectDriver's licence details.
dateOfBirthstring · dateDate of birth, as YYYY-MM-DD.
genderenum<string>Recorded gender.
currentAddressobjectWhere the tenant currently lives. Sending this replaces the whole address.
emergencyContactsobject[]People to contact in an emergency. Sending this replaces the whole list.
iconsstring[]Icon keys to pin to the tenant. Sending this replaces the whole list.
passwordstringThe password to give the tenant. 5 to 150 characters. Leave it out and MagicDoor generates one, which comes back in the response.
sendPortalInvitebooleantrue sends the company's tenant portal invite templates to this tenant straight away. If the invite fails to send the tenant is still created — resend it with send a tenant portal invite.
Response
200 · The new tenant, plus the password they will sign in with.
idstringThe tenant. This is the person, not their place on any particular lease.
activebooleanfalse once the tenant has been deactivated. A deactivated tenant cannot sign in and cannot be given a new password.
emailstringEmail address. Absent when none is on file.
firstNamestringGiven name.
lastNamestringFamily name. Absent when only a first name is on file.
phonestringPhone number, formatted for reading. Absent when none is on file.
createdstring · date-timeWhen the tenant record was created.
updatedstring · date-timeWhen the tenant record was last changed.
lastSeenstring · date-timeWhen the tenant last used the tenant portal. Absent when they never have.
lastPortalInvitestring · date-timeWhen a portal invite was last sent. Absent when none ever was.
portalStatusenum<string>Where the tenant is in getting onto the tenant portal: notInvited (never invited), invited (invited but never signed in), active (has signed in).
chatIdstringThe tenant's conversation with the company. Absent when no conversation exists.
languagestringISO 639-1 language code used for messages to this tenant.
ssnstringThe tenant's Social Security number, if one was recorded. Returned in full, so treat every response containing it as sensitive. No example is shown here on purpose.
driversLicenseobjectDriver's licence details, if recorded. Returned in full, so treat it as sensitive. No example is shown here on purpose.
dateOfBirthstring · dateThe tenant's date of birth, if recorded. No example is shown here on purpose.
genderenum<string>The tenant's recorded gender. Absent when not recorded.
currentAddressobjectWhere the tenant currently lives, as recorded on the tenant record. This is not derived from their lease.
emergencyContactsobject[]People to contact in an emergency.
iconsstring[]Icon keys a property manager has pinned to the tenant. Always present, possibly empty.
imageIdstringThe tenant's photo. Absent when they have none.
passwordstringThe password the tenant can now sign in with — either the one you sent or the one MagicDoor generated. Returned here and nowhere else. No example value is shown.
409 · The email address or phone number already belongs to another tenant in the company. `errors` maps the offending field to its message. This particular response is built by hand rather than by the usual problem-details machinery, so unlike every other error on this page it carries no `type`, no `instance` and no `traceId`.
401 · The access token is missing, expired, or does not belong to a property manager.
A tenant is a person: one record per human being, with their contact details, their identity documents and their portal sign-in. A lease tenant is that person's place on one particular lease, with its own move-in and move-out dates. The same tenant can be a lease tenant on several leases at once, and stays a tenant after every one of them ends. Endpoints under a lease manage lease tenants; the endpoints here manage the person.
The password field of the response holds the tenant's sign-in password in clear text. It is returned once, at creation, and no endpoint will give it to you again. Hand it to the tenant over a channel you trust and do not write it to logs. The example above deliberately leaves it out.
The call creates the tenant record and a matching MagicDoor user. If the user cannot be created — for instance because the email or phone already belongs to someone else's account — the tenant record is rolled back and nothing is left behind.
A tenant created here is a person and nothing more. They are not on any lease until they are added to one.