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

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Customize application email

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Gives the app its own version of an application email, as an email template you can change. The template starts as a copy of the email the app sends today, with placeholders such as `{{first_name}}` and `{{action_url}}` where the recipient's details go. Ask the AI to change it through [Send chat message](/api-reference/send-chat-message).

Base44 sends four application emails for the app: password reset (`password_reset`), sign-up verification (`email_verification`), invitation (`user_invite`), and access approval (`access_approved`). They use the app's brand automatically. From now on, the app sends its own version. For `email_verification`, that also needs the app to send from its own email domain and the version to pass a review, and [Preview application email](/api-reference/preview-application-email) reports in `authored_status` which version is sent. Delete the template with [Delete email template](/api-reference/delete-email-template) to go back to the Base44 version.

Calling this again returns the template the app already has, with `created` set to `false`.

Creating the template needs a paid workspace plan.

This is limited to 10 requests per minute per app for each workspace's personal API keys, so every key in a workspace shares one allowance. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/emails/system/{email_type}/materialize
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/emails/system/{email_type}/materialize:
    post:
      summary: Customize application email
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Gives the app its own version of an application email, as an email
        template you can change. The template starts as a copy of the email the
        app sends today, with placeholders such as `{{first_name}}` and
        `{{action_url}}` where the recipient's details go. Ask the AI to change
        it through [Send chat message](/api-reference/send-chat-message).


        Base44 sends four application emails for the app: password reset
        (`password_reset`), sign-up verification (`email_verification`),
        invitation (`user_invite`), and access approval (`access_approved`).
        They use the app's brand automatically. From now on, the app sends its
        own version. For `email_verification`, that also needs the app to send
        from its own email domain and the version to pass a review, and [Preview
        application email](/api-reference/preview-application-email) reports in
        `authored_status` which version is sent. Delete the template with
        [Delete email template](/api-reference/delete-email-template) to go back
        to the Base44 version.


        Calling this again returns the template the app already has, with
        `created` set to `false`.


        Creating the template needs a paid workspace plan.


        This is limited to 10 requests per minute per app for each workspace's
        personal API keys, so every key in a workspace shares one allowance.
        Some workspaces have a different limit.


        <Note>This endpoint accepts a personal API key belonging to a user with
        editor access to the app. A read-only key is refused, and workspace API
        keys are not accepted.</Note>
      operationId: >-
        materialize_system_email_route_api_apps__app_id__emails_system__email_type__materialize_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app the emails belong to.
            title: App Id
          description: ID of the app the emails belong to.
          example: 6820f3a4e7b91d003c45a1f2
        - name: email_type
          in: path
          required: true
          schema:
            type: string
            description: >-
              The application email: `password_reset`, `email_verification`,
              `user_invite`, or `access_approved`.
            title: Email Type
          description: >-
            The application email: `password_reset`, `email_verification`,
            `user_invite`, or `access_approved`.
          example: password_reset
      responses:
        '200':
          description: The app's template for the email.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizedApplicationEmail'
        '401':
          description: Missing or invalid credentials.
        '402':
          description: >-
            The app has no template for this email yet, and the workspace's plan
            doesn't include one.
        '403':
          description: >-
            You don't have editor access to this app, the app is blocked, your
            API key is read-only, or you used a workspace API key.
        '404':
          description: >-
            App not found, or `email_type` isn't one of the four application
            emails.
        '429':
          description: >-
            Rate limit exceeded. The base limit is 10 requests per minute. See
            [Rate
            limits](/developers/references/apps-api/get-started/rate-limits) for
            the multiplier your plan gets.
components:
  schemas:
    CustomizedApplicationEmail:
      properties:
        template_id:
          type: string
          title: Template Id
          description: >-
            ID of the template. Use it with [Get email
            template](/api-reference/get-email-template).
          example: 68c1f0a2b3d4e5f6a7b8c9d0
        name:
          type: string
          title: Name
          description: >-
            Name of the template: `PasswordReset`, `EmailVerification`,
            `UserInvite`, or `AccessApproved`.
          example: PasswordReset
        created:
          type: boolean
          title: Created
          description: >-
            `true` when this request created the template, and `false` when the
            app already had it.
          example: true
      type: object
      required:
        - template_id
        - name
        - created
      title: CustomizedApplicationEmail
      description: The app's own template for an application email.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.