curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure"
headers = {"api_key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("api_key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"domain": "example.com",
"configuration_status": "pending_domain_verification",
"last_check": "2026-08-26T09:12:44"
}Retry email domain setup
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.
The active and not_configured statuses can’t be retried. There’s nothing to retry on a domain that already sends, and one that was never set up needs Enable email sending for a domain instead.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure"
headers = {"api_key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"api_key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("api_key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/custom-email-domains/configure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"domain": "example.com",
"configuration_status": "pending_domain_verification",
"last_check": "2026-08-26T09:12:44"
}Authorizations
Personal API key.
Path Parameters
ID of the app whose email domains you want to work with.
Query Parameters
Domain to configure. Required when multiple domains exist.
Response
Where setup stands after the retry.
Response for email domain configuration.
The domain that was retried.
"example.com"
Where setup stands after the retry. Only active sends mail. A retry starts the next step rather than finishing it, so this is often still a pending_ value, meaning setup is in progress. The failed_ values mean it stopped and you can try again.
"pending_domain_verification"
When Base44 last checked this domain's records, as a UTC timestamp in ISO 8601 format, or null before the first check.
"2026-08-26T09:12:44"
Was this page helpful?