List the custom domains on a branch
API Reference / Functions / List the custom domains on a branch
GET /projects//branches//custom-domains
Section titled “GET /projects//branches//custom-domains”Lists all custom domains registered on the branch, across every target entity.
Note: This endpoint is currently in Beta.
Parameters
Section titled “Parameters”project_id(string, path, required) The Neon project IDbranch_id(string, path, required) The Neon branch IDcursor(string, query, optional) A cursor to use in pagination. A cursor defines your place in the data list. Includeresponse.pagination.nextin subsequent API calls to fetch next page of the list.limit(integer, query, optional) Specify a value from 1 to 1000 to limit number of domains in the response
Response (200)
Section titled “Response (200)”-
custom_domains(array, optional)-
domain(string, required) The registered custom domain (normalized, lowercase). -
entity_type(string, required) The kind of branch entity the domain targets. Possible values:function(v1 supports onlyfunction). Not anenum: new values may ship in later spec versions — treat any undocumented value as unknown. -
entity_id(string, required) The target entity's identifier within the branch. Forfunctionthis is the function slug. -
cname_target(string, required) The hostname the customer must point their custom domain at with a CNAME record. Empty when the serving region has no custom-domains front door configured. This is the activation input: point DNS here and the domain goes live (seestatus) once a certificate is issued on the first request. -
status(string, optional) The domain's current validity, computed by a background check:pending(still converging — point your CNAME atcname_targetand wait),active(live: DNS resolves to the edge, the CA is authorized, and routing is published), orerror(a fixable problem — seestatus_reason). Not anenum: treat any undocumented value as unknown. May be absent briefly right after registration. -
dns_status(string, optional) The DNS + CAA portion of the check:pending(no records yet),ok(resolves to our edge and the CA is authorized),misconfigured(your CNAME does not resolve to our edge), orcaa_blocked(your CAA records forbid Let's Encrypt). Not anenum. -
binding_status(string, optional) Whether Neon's internal routing for the domain is published:pending,present, ormissing.missingis an internal fault surfaced for support. Not anenum. -
status_reason(string, optional) A short, stable machine-readable reason for a non-activestatus(e.g.cname-not-pointing-at-edge,caa-blocks-lets-encrypt,binding-missing), suitable for keying an actionable hint. Empty when active or pending.
-
-
pagination(object, optional) To paginate the response, issue an initial request withlimitvalue. Then, add the value returned in the response.pagination.nextattribute into the request under thecursorquery parameter to the subsequent request to retrieve next page in pagination. The contents on cursornextare opaque, clients are not expected to make any assumptions on the format of the data inside the cursor.next(string, optional) Cursor for the next page of results. Pass it as thecursorquery parameter on the next request. Absent on the last page.sort_by(string, optional) Field by which the results were sorted, echoing the request's sort_by parameter.sort_order(string, optional) Sort order active for this page. Pass back assort_orderin the next request to maintain consistent ordering. Valid values areascanddesc.
Code examples
Section titled “Code examples”curl "https://console.neon.tech/api/v2/projects/$PROJECT_ID/branches/$BRANCH_ID/custom-domains" \
-H "Authorization: Bearer $NEON_API_KEY"import { createNeonClient, raw } from '@neon/sdk';
const neon = createNeonClient({ apiKey: process.env.NEON_API_KEY });
const { data } = await raw.listProjectBranchCustomDomains({
client: neon.client,
path: {
project_id: process.env.PROJECT_ID,
branch_id: process.env.BRANCH_ID
}
});Errors
Section titled “Errors”default General Error.
The request may or may not be safe to retry, depending on the HTTP method, response status code, and whether a response was received.
- If no response is returned from the API, a network error or timeout likely occurred.
- In some cases, the request may have reached the server and been successfully processed, but the response failed to reach the client. As a result, retrying non-idempotent requests can lead to unintended results.
The following HTTP methods are considered non-idempotent: POST, PATCH, DELETE, and PUT. Retrying these methods is generally not safe.
The following methods are considered idempotent: GET, HEAD, and OPTIONS. Retrying these methods is safe in the event of a network error or timeout.
Any request that returns a 503 Service Unavailable response is always safe to retry.
Any request that returns a 423 Locked response is safe to retry. 423 Locked indicates that the resource is temporarily locked, for example, due to another operation in progress.
-
request_id(string, optional) Unique identifier for the request, useful for debugging. You can set this value manually by including anX-Request-IDheader in the request. If not provided, the value will be generated automatically. -
code(string, required) Machine-readable code classifying the error type. Seemessagefor a human-readable explanation. Default: `` -
message(string, required) Error message