Organizations
List custom domains and DNS verification hints
Returns allowed hostnames for **this project**, primary hostname (per project), API base URL, and per-domain DNS guidance. Each row uses **`dnsRecords`** for the Mudbase ownership TXT (purpose **`mudbase_ownership`**) and routing **CNAME** from Fly **`dns_requirements.cname`** when Fly ACME has provisioned (else fallback **`CUSTOM_DOMAIN_API_CNAME_TARGET`**), and—when Fly ACME is enabled (**`FLY_API_TOKEN`** + **`CUSTOM_DOMAIN_FLY_ACME_ENABLED`**)—Fly rows (`fly_ownership`, `acme_challenge`, etc.) after the org has passed Mudbase TXT at least once. **`flyCertificateStatus`** mirrors Fly’s certificate state when ACME automation is on (e.g. `pending_validation`, `active`). **`cloudflareEdge`** appears only when Cloudflare SSL-for-SaaS env is configured. Fly ACME and Cloudflare SaaS are mutually exclusive on the server. Requires Growth, Scale, or Enterprise plan (custom domains included in plan features).
/api/orgs/{orgId}/projects/{projectId}/domainsSDK setup
Create a client and set credentials (JWT and/or API key) before calling the API. Match the authentication type shown above.
import { Configuration, OrganizationsApi } from 'mudbase-sdk';
const configuration = new Configuration({
basePath: 'https://cloud.mudbase.dev',
accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfbW9yZ2FuX2RlIiwiZW1haWwiOiJtb3JnYW4uY2hlbkBub3J0aHdpbmQuZGV2IiwiZXhwIjoxODI1MTI5NjAwfQ.doc_preview_sig',
});
const organizations = new OrganizationsApi(configuration);import { Configuration, OrganizationsApi } from 'mudbase-sdk';
const configuration = new Configuration({
basePath: 'https://cloud.mudbase.dev',
accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfbW9yZ2FuX2RlIiwiZW1haWwiOiJtb3JnYW4uY2hlbkBub3J0aHdpbmQuZGV2IiwiZXhwIjoxODI1MTI5NjAwfQ.doc_preview_sig',
});
const organizations = new OrganizationsApi(configuration);Example request
Call this endpoint using the client from SDK setup. Use View HTTP for a raw cURL example.
const { data: result } = await organizations.listOrgCustomDomains("org_Zabqrc7h45", "proj_PtO0l6xLALCr");const { data: result } = await organizations.listOrgCustomDomains("org_Zabqrc7h45", "proj_PtO0l6xLALCr");Playground
liveTest this endpoint with your own credentials. Your requests will be sent to the live API.
No Request Yet
Send a request to see the full inspector
Authentication
Authorization: Bearer YOUR_TOKEN header (user-facing apps, RBAC). View authentication guide →Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | Yes | — |
projectId | string | Yes | — |
Responses
{
"domains": [
{
"_id": "WHHDfeNRXMGYQQJi",
"hostname": "Asa Jones",
"status": "system synthesize",
"isPrimary": true,
"source": "imported",
"createdAt": "2026-07-09T23:26:37.622Z",
"verifiedAt": "2026-07-27T06:18:44.333Z",
"lastVerifiedAt": "2026-06-25T19:30:41.120Z",
"cnameSubmittedAt": "2026-06-08T03:49:20.029Z",
"cnameApprovedAt": "2026-07-04T07:52:36.675Z",
"customDomainVerificationStep": 36683,
"routingCnameTarget": "Ida Lubowitz",
"dnsRecords": [
{
"type": "capacitor override",
"name": "Caroline Orn",
"value": "sensor program",
"purpose": "capacitor parse"
}
],
"platformActivationPending": true,
"customDomainLiveForApiTraffic": false,
"cloudflareEdge": {
"saasIntegrationEnabled": false,
"skipped": false,
"reason": "feed index",
"customHostnameId": "Essie Howell",
"hostnameStatus": "David Wisozk",
"sslStatus": "interface connect",
"ownershipVerification": {
"name": "Kirstin Ritchie",
"type": "circuit parse",
"value": "sensor reboot"
},
"sslValidationRecords": [
{
"txtName": "Adam Hilpert-Dooley",
"txtValue": "bus connect",
"httpUrl": "https://dark-deck.name/",
"httpBody": "panel input",
"cname": "Eleanor Rempel",
"cnameTarget": "Sallie Rath Jr."
}
],
"lastError": "firewall quantify",
"instructions": "driver compress"
},
"flyCertificateStatus": "panel connect",
"platformDnsVerification": {
"recordType": "driver hack",
"recordName": "Hailee Murphy",
"recordValue": "panel parse",
"ttlSeconds": 42174,
"staffNote": "driver parse",
"updatedAt": "2026-07-20T10:30:13.844Z"
},
"platformDnsVerificationSubmittedAt": "2026-07-12T17:52:05.354Z"
}
],
"dnsVerificationInstructions": "bandwidth reboot",
"primaryHostname": "Rogers Boyle",
"apiBaseUrl": "https://merry-violin.biz",
"maxDomains": 66438,
"customDomainAllowed": false
}{
"domains": [
{
"_id": "WHHDfeNRXMGYQQJi",
"hostname": "Asa Jones",
"status": "system synthesize",
"isPrimary": true,
"source": "imported",
"createdAt": "2026-07-09T23:26:37.622Z",
"verifiedAt": "2026-07-27T06:18:44.333Z",
"lastVerifiedAt": "2026-06-25T19:30:41.120Z",
"cnameSubmittedAt": "2026-06-08T03:49:20.029Z",
"cnameApprovedAt": "2026-07-04T07:52:36.675Z",
"customDomainVerificationStep": 36683,
"routingCnameTarget": "Ida Lubowitz",
"dnsRecords": [
{
"type": "capacitor override",
"name": "Caroline Orn",
"value": "sensor program",
"purpose": "capacitor parse"
}
],
"platformActivationPending": true,
"customDomainLiveForApiTraffic": false,
"cloudflareEdge": {
"saasIntegrationEnabled": false,
"skipped": false,
"reason": "feed index",
"customHostnameId": "Essie Howell",
"hostnameStatus": "David Wisozk",
"sslStatus": "interface connect",
"ownershipVerification": {
"name": "Kirstin Ritchie",
"type": "circuit parse",
"value": "sensor reboot"
},
"sslValidationRecords": [
{
"txtName": "Adam Hilpert-Dooley",
"txtValue": "bus connect",
"httpUrl": "https://dark-deck.name/",
"httpBody": "panel input",
"cname": "Eleanor Rempel",
"cnameTarget": "Sallie Rath Jr."
}
],
"lastError": "firewall quantify",
"instructions": "driver compress"
},
"flyCertificateStatus": "panel connect",
"platformDnsVerification": {
"recordType": "driver hack",
"recordName": "Hailee Murphy",
"recordValue": "panel parse",
"ttlSeconds": 42174,
"staffNote": "driver parse",
"updatedAt": "2026-07-20T10:30:13.844Z"
},
"platformDnsVerificationSubmittedAt": "2026-07-12T17:52:05.354Z"
}
],
"dnsVerificationInstructions": "bandwidth reboot",
"primaryHostname": "Rogers Boyle",
"apiBaseUrl": "https://merry-violin.biz",
"maxDomains": 66438,
"customDomainAllowed": false
}Errors
| Code | Meaning |
|---|---|
401 | Unauthorized |
403 | Forbidden |