---
title: "List Domains"
method: GET
path: "/domain"
tags: ["domains"]
---

# List Domains

`GET /domain`

## Request

- Base URL: `https://api.faable.com`
- URL: `https://api.faable.com/domain`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://faable.auth.faable.link/authorize`, token URL `https://faable.auth.faable.link/oauth/token`)
  - HTTP bearer
  - OAuth 2 (client credentials, token URL `https://faable.auth.faable.link/oauth/token`)
  - HTTP bearer
  - HTTP basic
  - API key in query parameter `apikey`

List Domains

## Query parameters

- `pageSize` number
- `cursor` string
- `next` string
- `count` boolean
- `query` string

## Response `200`

Default Response

- object
  - `next` string, required
  - `results` Domain[], required
    - `id` string, required: Domain ID
    - `team` string, required
    - `fqdn` string, required: Unique identifier of the domain
    - `tls` boolean, required: TLS is enabled for this domain
    - `app_id` string, nullable: Linked App
    - `verified` boolean, required: If the domain has the ownership verified
    - `active` boolean, required
    - `dns_alias` string, nullable: Internal DNS alias override host
    - `dormant_at` string, date-time, nullable: Set when the domain went dormant: it served no active app and had not pointed at Faable for two days. It is not checked nor served until `POST /domain/:id/recheck`.
    - `recheck_at` string, date-time, nullable: Last manual re-check (Retry) of this domain
    - `status` DomainStatus, required
      - `dns_state` 'pending' | 'ok' | 'misconfigured' | 'error', required: Outcome of the latest DNS verification check
      - `dns_checked_at` string, nullable, required: ISO timestamp of the last DNS change
      - `dns_last_seen_at` string, nullable, required: ISO timestamp of the last DNS check
      - `dns_verified_at` string, nullable, required: ISO timestamp of the first successful DNS verification
      - `dns_error_kind` 'transient' | 'proxy' | 'null', nullable, required: Why an `error` verdict could not conclude
      - `dns_expected` string[], required: Expected CNAME target(s) the fqdn should point to
      - `dns_observed` string[], required: CNAME target(s) actually resolved for the fqdn
      - `dns_expected_ips` string[], required: IPv4 address(es) the expected target currently resolves to
      - `dns_message` string, nullable, required: Human-readable diagnostic of the DNS check
      - `dns_warning` string, nullable, required: Advisory for a verified domain whose DNS is functional but not the record we publish
      - `acme_state` 'pending' | 'ok', required: Whether `_acme-challenge.<fqdn>` delegates to Faable, so the certificate can be issued before the fqdn points here
      - `acme_expected` string[], required: The record that pre-validates the certificate: `_acme-challenge.<fqdn>` CNAME to this target
      - `acme_observed` string[], required: CNAME target(s) resolved for `_acme-challenge.<fqdn>`
      - `tls_state` 'pending' | 'ok', required: Whether the edge serves a valid certificate for the fqdn (checked against the PoP with the fqdn as SNI)
      - `tls_expires_at` string, nullable, required: Expiry of the certificate the edge serves for the fqdn, when `tls_state` is `ok`
    - `metadata` object, required
    - `createdAt` string, required: Domain creation date
    - `updatedAt` string: Domain updated date
  - `total` integer: Rows matching the whole filter, across every page. Only with `?count=true`.

## Other responses

- `400`: `invalid_query` — The `?query=` FaableQL expression could not be parsed. `invalid_expand` — An `?expand=` path is not allowed on this resource. `search_not_supported` — This resource does not support `?q=`. `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
- `401`: `team_or_scope_required` — Listing needs either a project in the `x-faable-project` header or a global scope on the token. `unauthorized` — The request carries no valid credentials. `invalid_token` — The bearer token is missing, malformed or expired.
- `403`: `forbidden` — The credentials are valid but do not allow this operation. `user_suspended` — The account is suspended. Contact support@faable.com.
- `429`: `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.
- `500`: `internal_error` — Unexpected server error. Retry later; the request id is logged.
- `503`: `database_unavailable` — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.

---

[API](https://skmtc.dev/faable/apis/faablecloud-api.md) · [All operations](https://skmtc.dev/faable/apis/faablecloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faable/apis/faablecloud-api/revisions/e2fc93da3c49?raw)
