> ## 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.

# Retry email domain setup

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

Retries setup for a domain that stalled, and reports where it got to.

What it retries depends on where the domain stopped. A domain waiting on DNS gets its records written again when Base44 controls them, or is reset so you can publish them yourself. A domain whose provider registration failed is registered again. A domain waiting on verification is checked again.

`active` and `not_configured` cannot be retried and return a 412. There is nothing to retry on a domain that already sends, and one that was never set up needs [Enable email sending for a domain](/api-reference/enable-email-sending-for-a-domain) instead.

The response carries the status after the attempt, which is often still a `pending_` value: a retry starts the next step rather than finishing it. Send `domain` when the app has more than one.

This endpoint is limited to 5 requests per minute.

<Note>`configuration_status` moves through `pending_dns_configuration`, `pending_user_dns_configuration`, `pending_domain_verification` and then `active`. The three `failed_` values mean setup stopped and you can retry with [Retry email domain setup](/api-reference/retry-email-domain-setup). Only `active` sends mail.</Note>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>



## OpenAPI

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


        Retries setup for a domain that stalled, and reports where it got to.


        What it retries depends on where the domain stopped. A domain waiting on
        DNS gets its records written again when Base44 controls them, or is
        reset so you can publish them yourself. A domain whose provider
        registration failed is registered again. A domain waiting on
        verification is checked again.


        `active` and `not_configured` cannot be retried and return a 412. There
        is nothing to retry on a domain that already sends, and one that was
        never set up needs [Enable email sending for a
        domain](/api-reference/enable-email-sending-for-a-domain) instead.


        The response carries the status after the attempt, which is often still
        a `pending_` value: a retry starts the next step rather than finishing
        it. Send `domain` when the app has more than one.


        This endpoint is limited to 5 requests per minute.


        <Note>`configuration_status` moves through `pending_dns_configuration`,
        `pending_user_dns_configuration`, `pending_domain_verification` and then
        `active`. The three `failed_` values mean setup stopped and you can
        retry with [Retry email domain
        setup](/api-reference/retry-email-domain-setup). Only `active` sends
        mail.</Note>


        <Note>This endpoint accepts a personal API key. Workspace API keys are
        not authorized for it and are rejected with a 403.</Note>
      operationId: >-
        configure_email_domain_api_apps__app_id__custom_email_domains_configure_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose email domains you want to work with.
            title: App Id
          description: ID of the app whose email domains you want to work with.
          example: 6820f3a4e7b91d003c45a1f2
        - name: domain
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Domain to configure. Required when multiple domains exist.
            title: Domain
          description: Domain to configure. Required when multiple domains exist.
      responses:
        '200':
          description: Where setup stands after the retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigureEmailResponse'
        '400':
          description: >-
            The app has more than one email domain and you did not say which to
            retry.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, you used
            a workspace API key, or the domain is suspended.
        '404':
          description: >-
            This app has no email domain set up, or none matching the `domain`
            you sent.
        '412':
          description: >-
            There is nothing to retry: the domain already sends, or it was never
            set up.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded (5 requests per minute).
components:
  schemas:
    ConfigureEmailResponse:
      properties:
        domain:
          type: string
          title: Domain
          description: The domain that was retried.
          example: example.com
        configuration_status:
          type: string
          title: Configuration Status
          description: >-
            Where setup stands after the retry. Often still a `pending_` value,
            because a retry starts the next step rather than finishing it.
          example: pending_domain_verification
        last_check:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Check
          description: >-
            When Base44 last checked this domain's records. `null` before the
            first check.
          example: '2026-08-26T09:12:44Z'
      type: object
      required:
        - domain
        - configuration_status
        - last_check
      title: ConfigureEmailResponse
      description: Response for email domain configuration.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````