List custom domains

Changed on

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

Returns every custom domain attached to the app.

The list covers domains at any stage:

  • Added, but not linked
  • Linked, but not yet verified
  • Live
  • Redirecting to another domain
  • Disabled

Adding a domain and linking it are separate steps. DNS propagation happens outside Base44, so a linked domain can sit unverified for as long as its nameservers take.

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

get/api/apps/{app_id}/custom-domains

Request

  • Base URL: https://app.base44.com
  • URL: https://app.base44.com/api/apps/{app_id}/custom-domains
  • Auth: HTTP bearer

Path parameters

app_idstring required

ID of the app the domain belongs to.

Query parameters

include_grow_landingboolean

Also return the subdomains Base Grow created for this app's landing pages.

Response

The app's custom domains.

idstring required

ID of the domain. Pass it as domain_id to the other domain endpoints.

domainstring required

The domain name, normalized to lower case with any scheme, trailing slash and leading www. removed.

app_idstring required

ID of the app the domain serves.

disabledboolean required

Whether Base44 has stopped serving the domain. A disabled domain stays attached to the app and keeps its DNS, and serves a placeholder page instead of the app.

last_status_checkstring date-time nullable

When Get custom domain status last ran for this domain, as a UTC timestamp in ISO 8601 format, or null if it never has.

redirect_target_domainstring nullable

The domain that visitors to this one are sent to with a 301 redirect. The value is null when this domain serves the app itself.

provider_idstring nullable

Names the registrar when the domain was bought through Base44's Wix flow. The value is null otherwise, which covers both a domain you own elsewhere and one bought through the Entri flow, so this isn't a purchased-versus-external signal.

Example response

[
  {
    "id": "68b1c0d4e7b91d003c45a1f7",
    "domain": "example.com",
    "app_id": "6820f3a4e7b91d003c45a1f2",
    "last_status_check": "2026-08-15T09:10:00",
    "last_status_payload": {
      "verificationStatus": "verified"
    },
    "redirect_target_domain": "www.example.com",
    "provider_id": "wix"
  }
]

Changes

    • info

      the security scope read_only was added to the endpoint's security scheme PersonalAccessTokenAuth

    • info

      the security scope full_access was removed from the endpoint's security scheme PersonalAccessTokenAuth

    • info

      the endpoint scheme security PersonalAccessTokenAuth was added to the API