---
title: "List custom hostnames for an app."
method: GET
path: "/app/{app_id}/custom-hostnames"
tags: ["customHostnames"]
---

# List custom hostnames for an app.

`GET /app/{app_id}/custom-hostnames`

Return all custom hostnames configured for the specified app, grouped by service (registry, proxy, download portal, replicated app).

Required RBAC Policy: kots/app/[:appid]/customhostname/list

## Path parameters

- `app_id` string, required

## Response `200`

ListCustomHostnamesResponse contains the JSON custom hostnames list

- object
  - `downloadPortal` KotsAppCustomHostname[]
    - `app_id` string
    - `cloudflare_custom_hostname_id` string
    - `cloudflare_worker_route_id` string
    - `created_at` string, date-time
    - `domain_txt_record_name` string
    - `domain_txt_record_value` string
    - `domain_verification_status` string
    - `domain_verification_type` string
    - `failure_count` integer
    - `failure_reason` string
    - `hostname` string
    - `is_default` boolean
    - `origin_server` string
    - `team_id` string
    - `tls_txt_record_name` string
    - `tls_txt_record_value` string
    - `tls_verification_status` string
    - `tls_verification_type` string
    - `updated_at` string, date-time
    - `verification_errors` string[]
  - `proxy` KotsAppCustomHostname[]
    - `app_id` string
    - `cloudflare_custom_hostname_id` string
    - `cloudflare_worker_route_id` string
    - `created_at` string, date-time
    - `domain_txt_record_name` string
    - `domain_txt_record_value` string
    - `domain_verification_status` string
    - `domain_verification_type` string
    - `failure_count` integer
    - `failure_reason` string
    - `hostname` string
    - `is_default` boolean
    - `origin_server` string
    - `team_id` string
    - `tls_txt_record_name` string
    - `tls_txt_record_value` string
    - `tls_verification_status` string
    - `tls_verification_type` string
    - `updated_at` string, date-time
    - `verification_errors` string[]
  - `registry` KotsAppCustomHostname[]
    - `app_id` string
    - `cloudflare_custom_hostname_id` string
    - `cloudflare_worker_route_id` string
    - `created_at` string, date-time
    - `domain_txt_record_name` string
    - `domain_txt_record_value` string
    - `domain_verification_status` string
    - `domain_verification_type` string
    - `failure_count` integer
    - `failure_reason` string
    - `hostname` string
    - `is_default` boolean
    - `origin_server` string
    - `team_id` string
    - `tls_txt_record_name` string
    - `tls_txt_record_value` string
    - `tls_verification_status` string
    - `tls_verification_type` string
    - `updated_at` string, date-time
    - `verification_errors` string[]
  - `replicatedApp` KotsAppCustomHostname[]
    - `app_id` string
    - `cloudflare_custom_hostname_id` string
    - `cloudflare_worker_route_id` string
    - `created_at` string, date-time
    - `domain_txt_record_name` string
    - `domain_txt_record_value` string
    - `domain_verification_status` string
    - `domain_verification_type` string
    - `failure_count` integer
    - `failure_reason` string
    - `hostname` string
    - `is_default` boolean
    - `origin_server` string
    - `team_id` string
    - `tls_txt_record_name` string
    - `tls_txt_record_value` string
    - `tls_verification_status` string
    - `tls_verification_type` string
    - `updated_at` string, date-time
    - `verification_errors` string[]

## Other responses

- `400` — Returned on bad input
- `401` — Return if the caller is not authorized
- `403` — Returned if the caller does not have the needed permission
- `404` — Returned on resource not found

---

[API](https://skmtc.net/replicated/apis/vendor-api-v3-2.md) · [All operations](https://skmtc.net/replicated/apis/vendor-api-v3-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/replicated/vendor-api-v3-2/versions/6fcf9e54aba4/schema)
