# Reset an invite template

Source: https://api-docs.magicdoor.com/api-reference/tenant-portal-invite-templates/reset-invite-template

Puts a built-in template's name and wording back to MagicDoor's defaults, discarding the company's edits. Templates the company created itself cannot be reset. Requires the `settings:write` permission.

`POST https://services.magicdoor.com/settings/company-portal/settings/tenant-portal-invite-templates/{id}/reset`

**Authentication:** bearer token in the `Authorization` header, as `Bearer <token>`.

## Path parameters

- `id` (string, required) — The template's Snowflake id, as returned by the list endpoint. Example: `1849037281920516096`.

## Example request

```bash
curl --request POST \
  --url 'https://services.magicdoor.com/settings/company-portal/settings/tenant-portal-invite-templates/1849037281920516096/reset' \
  --header 'Authorization: Bearer <token>'
```

## Responses

### 200 — The template, back at its defaults.

- `id` (string, required) — The template's Snowflake id, as a decimal string.
- `kind` (enum<string>, required) — Which message in the invite sequence this template is. Everything the company creates itself is `Custom`. One of: `Welcome`, `PortalInvite`, `Payment`, `PasswordChange`, `Custom`, `PostInviteMaintenance`, `PostInviteImportantDocuments`.
- `name` (string, required) — What the template is called in the settings screen.
- `isCustom` (boolean, required) — `true` for templates the company created, `false` for MagicDoor's built-in ones. Only custom templates can be deleted, and only built-in ones can be reset.
- `email` (object, required) — The email version of the message.
  - `subject` (string, required) — The email subject line.
  - `body` (string, required) — The email body, as HTML.
- `text` (object, required) — The text-message version of the message.
  - `body` (string, required) — The text message body, as plain text.
- `updatedAt` (string, required) — When the template was last saved, formatted as `yyyy-MM-dd HH:mm`. Unlike timestamps elsewhere in the API this is a display string, not an ISO 8601 value.
- `updatedByName` (string) — The property manager who last saved it, as a first name and last initial. Absent when the last save was not made by a property manager.

```json
{
  "id": "1849037281920516096",
  "kind": "PortalInvite",
  "name": "Portal Invite",
  "isCustom": false,
  "email": {
    "subject": "Your tenant portal is ready",
    "body": "<p>Hi {TenantName}, your portal is ready. Sign in at {PortalLink}.</p>"
  },
  "text": {
    "body": "Hi {TenantName}, your {CompanyName} portal is ready: {PortalLink}"
  },
  "updatedAt": "2026-08-17 21:04",
  "updatedByName": "Dana K."
}
```

### 401 — The access token is missing, expired, or invalid.

### 403 — The caller does not hold the `settings:write` permission.

### 404 — No tenant invite template with that id belongs to the caller's company.

### 422 — The template is a custom one, and only built-in templates have defaults to go back to.

```json
{
  "type": "https://httpstatuses.com/422",
  "title": "Unprocessable Entity",
  "status": 422,
  "detail": "Only built-in invite templates can be reset to default.",
  "instance": "/company-portal/settings/tenant-portal-invite-templates/1849037281920516096/reset",
  "traceId": "0HN7GK9C2M4PQ",
  "entityType": "PortalInviteTemplate",
  "entityId": "1849037281920516096"
}
```
