curl --request PATCH \
--url https://api.erdo.ai/v1/custom-domains/{domain}/manager-default \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"manager_default": true
}
'import requests
url = "https://api.erdo.ai/v1/custom-domains/{domain}/manager-default"
payload = { "manager_default": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({manager_default: true})
};
fetch('https://api.erdo.ai/v1/custom-domains/{domain}/manager-default', 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://api.erdo.ai/v1/custom-domains/{domain}/manager-default",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'manager_default' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.erdo.ai/v1/custom-domains/{domain}/manager-default"
payload := strings.NewReader("{\n \"manager_default\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.erdo.ai/v1/custom-domains/{domain}/manager-default")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"manager_default\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/custom-domains/{domain}/manager-default")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"manager_default\": true\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"dns_records": [
{
"name": "<string>",
"type": "<string>",
"value": "<string>"
}
],
"domain": "<string>",
"error_reason": "<string>",
"last_checked_at": "<string>",
"manager_default": true,
"status": "<string>",
"updated_at": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}SetCustomDomainManagerDefaultAPI marks a registered domain as the one the
caller’s managed organizations serve their pages from — or clears it.
A separate endpoint rather than a field re-sent on registration because promoting a domain that is already live is the ordinary case: a manager registers the hostname, waits out DNS and the certificate, and only then points its clients at it. Folding this into registration would mean tearing down a working certificate to change one boolean.
curl --request PATCH \
--url https://api.erdo.ai/v1/custom-domains/{domain}/manager-default \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"manager_default": true
}
'import requests
url = "https://api.erdo.ai/v1/custom-domains/{domain}/manager-default"
payload = { "manager_default": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({manager_default: true})
};
fetch('https://api.erdo.ai/v1/custom-domains/{domain}/manager-default', 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://api.erdo.ai/v1/custom-domains/{domain}/manager-default",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'manager_default' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.erdo.ai/v1/custom-domains/{domain}/manager-default"
payload := strings.NewReader("{\n \"manager_default\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.erdo.ai/v1/custom-domains/{domain}/manager-default")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"manager_default\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/custom-domains/{domain}/manager-default")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"manager_default\": true\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"dns_records": [
{
"name": "<string>",
"type": "<string>",
"value": "<string>"
}
],
"domain": "<string>",
"error_reason": "<string>",
"last_checked_at": "<string>",
"manager_default": true,
"status": "<string>",
"updated_at": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}Authorizations
An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).
Path Parameters
Body
organizations serve their pages from; false clears it, returning them to the platform pages host.
Response
Success response
provider — shown until (and after) the domain validates, so a stuck domain can be re-checked against what should exist.
Show child attributes
Show child attributes
"pages.acme.com". It is the identifier every other custom-domain endpoint takes.
disabled (e.g. a CAA record blocking certificate issuance); empty otherwise.
(RFC 3339); empty if never checked yet.
one manages serve their pages from when they have registered none of their own. At most one of an organization's domains carries it.
customer's DNS records), "pending_cert" (ownership verified, certificate issuing), "active" (serving), "failed" (validation or issuance error — see error_reason), or "disabled" (deregistered upstream). This is read from the same record the serving path consults, kept reconciled against the CDN by a monitoring job.

