The Apps API is in beta. Its endpoints and responses may change.
Add domains in the editor, manage them here
This API doesn’t add domains to an app. There’s no create endpoint, so a domain has to exist on the app before any of these calls apply to it. Add one in the Base44 online app editor first: Everything after that is automatable. Linking a domain, watching it verify, taking it out of service, and removing it are all API calls.The domain lifecycle
A domain moves through three stages, and only the last one serves your app. You drive the first move. The second happens on its own.1
Added
The domain exists on the app but isn’t attached to Base44’s hosting, so it doesn’t serve anything yet. Call Link custom domain to move it on.
2
Linked
The domain is attached and the hosting provider is checking its DNS records. Nothing here needs a call from you. It finishes when the records propagate, which happens outside Base44 and can take as long as the nameservers do, so poll Get custom domain status to watch for the change.
3
Verified
The provider has confirmed the records point at Base44, and the domain now serves your app.
Email needs its own DNS
Sending mail from a domain is a second setup on top of the domain setup, not part of it. The DNS records that make a domain serve your app and the DNS records that let it send mail are separate sets, and the domain has to reach Verified before you can start on email at all. Email setup follows the same pattern as the domain lifecycle. You make one call, then the mail provider works through the rest on its own.1
Records published
Call Enable email sending for a domain. Base44 publishes the DNS records itself when it controls the domain’s DNS. Otherwise it returns them in
dns_records for you to publish.2
Verifying
The mail provider checks that the records resolve, without anything further from you. Poll List email domains to watch for the change, and if setup stalls, Retry email domain setup picks it up from wherever it stopped.
3
Active
The app sends from your address. Nothing sends before this point, so treat
configuration_status reading active as the signal that email works.