curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status"
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-domains/{domain_id}/status', 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-domains/{domain_id}/status",
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-domains/{domain_id}/status"
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-domains/{domain_id}/status")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status")
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{
"id": "68b1c0d4e7b91d003c45a1f7",
"domain": "example.com",
"app_id": "6820f3a4e7b91d003c45a1f2",
"disabled": false,
"last_status_check": "2026-08-15T09:10:00",
"last_status_payload": {
"verificationStatus": "verified"
},
"redirect_target_domain": "www.example.com",
"provider_id": "wix"
}Get custom domain status
Asks the hosting provider whether the domain’s DNS is verified, and returns the domain with the answer written into it.
This is the endpoint to poll while waiting for a domain to go live. It reaches the provider on every call, unlike Get custom domain, which returns Base44’s stored copy. It also writes what it learns, so last_status_check and last_status_payload on the domain are updated as a side effect.
Only call this for a domain that’s currently linked. A domain that was never linked, or was unlinked, isn’t attached at the provider, and asking about it fails rather than reporting “not verified”.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status"
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-domains/{domain_id}/status', 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-domains/{domain_id}/status",
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-domains/{domain_id}/status"
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-domains/{domain_id}/status")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/custom-domains/{domain_id}/status")
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{
"id": "68b1c0d4e7b91d003c45a1f7",
"domain": "example.com",
"app_id": "6820f3a4e7b91d003c45a1f2",
"disabled": false,
"last_status_check": "2026-08-15T09:10:00",
"last_status_payload": {
"verificationStatus": "verified"
},
"redirect_target_domain": "www.example.com",
"provider_id": "wix"
}Authorizations
Personal API key.
Path Parameters
ID of the app the domain belongs to.
ID of the custom domain. Get this from List custom domains.
Response
The domain, with the provider's answer written into its status fields.
A custom domain attached to an app.
ID of the domain. Pass it as domain_id to the other domain endpoints.
"68b1c0d4e7b91d003c45a1f7"
The domain name, normalized to lower case with any scheme, trailing slash and leading www. removed.
"example.com"
ID of the app the domain serves.
"6820f3a4e7b91d003c45a1f2"
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.
false
When Get custom domain status last ran for this domain, as a UTC timestamp in ISO 8601 format, or null if it never has.
"2026-08-15T09:10:00"
The provider's last report on the domain, or null until a status check has run.
Show child attributes
Show child attributes
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.
"www.example.com"
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.
"wix"
Was this page helpful?