API ReferenceBranding
Custom Domains
Register a customer-owned domain for hosted Universal Login (CNAME-validated).
RPCs
| Method | Path |
|---|---|
| CreateCustomDomain | POST /v1/branding/customDomains |
| ListCustomDomains | GET /v1/branding/customDomains |
| DeleteCustomDomain | DELETE /v1/branding/customDomains/{id} |
| VerifyCname | POST /v1/branding/customDomains/{id}:verifyCname |
Base URL: https://<Domain id="api"/>
Authentication: Bearer token with branding:write.
Onboarding flow
CreateCustomDomainreturns a CNAME target (e.g.cname-acme-abc123.custom.<Domain id="app"/>).- Customer creates a CNAME record from
login.acme.comto that target. VerifyCnamepolls DNS; on match it triggers an ACME order for TLS.- Once TLS is active, users hitting
https://login.acme.com/sign-inland on Avnology's Universal Login, fully branded.
See Custom domains guide.
Register a domain
const res = await fetch(
"https://api-id.avnology.net/v1/branding/customDomains",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AVNOLOGY_API_KEY}`,
"X-Avnology-Org"
body := strings.NewReader(`{"domain":"login.acme.com"}`)
req, _ := http.NewRequest("POST",
"https://api-id.avnology.net/v1/branding/customDomains", body)import httpx, os
httpx.post(
"https://api-id.avnology.net/v1/branding/customDomains",
json={"domain": "login.acme.com"},
headers={
"Authorization": f"Bearer {
const res = await fetch(
"https://api-id.avnology.net/v1/branding/customDomains",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AVNOLOGY_API_KEY}`,
"X-Avnology-Org"
body := strings.NewReader(`{"domain":"login.acme.com"}`)
req, _ := http.NewRequest("POST",
"https://api-id.avnology.net/v1/branding/customDomains", body)import httpx, os
httpx.post(
"https://api-id.avnology.net/v1/branding/customDomains",
json={"domain": "login.acme.com"},
headers={
"Authorization": f"Bearer {
const res = await fetch(
"https://api-id.avnology.net/v1/branding/customDomains",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AVNOLOGY_API_KEY}`,
"X-Avnology-Org"
body := strings.NewReader(`{"domain":"login.acme.com"}`)
req, _ := http.NewRequest("POST",
"https://api-id.avnology.net/v1/branding/customDomains", body)import httpx, os
httpx.post(
"https://api-id.avnology.net/v1/branding/customDomains",
json={"domain": "login.acme.com"},
headers={
"Authorization": f"Bearer {
const res = await fetch(
"https://api-id.avnology.net/v1/branding/customDomains",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AVNOLOGY_API_KEY}`,
"X-Avnology-Org"
body := strings.NewReader(`{"domain":"login.acme.com"}`)
req, _ := http.NewRequest("POST",
"https://api-id.avnology.net/v1/branding/customDomains", body)import httpx, os
httpx.post(
"https://api-id.avnology.net/v1/branding/customDomains",
json={"domain": "login.acme.com"},
headers={
"Authorization": f"Bearer {