---
title: "Cloudflare Zones"
method: GET
path: "/integrations/cloudflare/zones"
tags: ["cloudflare"]
---

# Cloudflare Zones

`GET /integrations/cloudflare/zones`

Every domain the grant covers, so the operator can pick one.

Unselectable zones are returned but flagged rather than hidden — an operator
whose zone is still pending should see why it is not selectable, not
wonder where their domain went.

``selectable`` means exactly "``/custom-domain/deploy`` will accept this".
The two must agree: offering a domain the deploy route then refuses is how
an operator ends up clicking Publish to find out. Each zone therefore
carries the deploy route's own reason for refusing it.

## Response `200`

Successful Response

- CloudflareZoneList
  - `zones` CloudflareZone[], required
    - `id` string, required
    - `name` string, required
    - `status` string, required
    - `account_id` string, required
    - `account_name` string, required
    - `selectable` boolean, required
    - `reason` string, nullable, required

## Other responses

- `409` — Cloudflare not connected
- `502` — Cloudflare API failure
- `503` — Cloudflare OAuth not configured

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getanana/cleon-api/revisions/3ad158624c53/schema)
