---
title: "Plan one Paid customer-owned hostname"
method: POST
path: "/v1/projects/{project_id}/paid-domain:plan"
---

# Plan one Paid customer-owned hostname

`POST /v1/projects/{project_id}/paid-domain:plan`

## Request

- Base URL: `https://app.ohmyho.st`
- URL: `https://app.ohmyho.st/v1/projects/{project_id}/paid-domain:plan`
- Auth: HTTP bearer

Plan the customer's requested hostname before or after the first Prod deployment. This read-only plan explains declaration, Cloudflare consent and activation; it does not claim the hostname, create provider resources or change DNS.

## Path parameters

- `project_id` string, required

## Headers

- `X-Request-Id` string

## Request body

- PaidDomainRequest
  - `hostname` string, required

## Response `200`

The requested hostname, routing target and staged provider effects.

- PaidDomainPlan
  - `status` 'planned', required
  - `hostname` string, required
  - `environment` 'prod', required
  - `cname_target` 'customers.omh.st' | 'customers.ohmyho.st', required
  - `effects` string[], required
  - `risks` string[], required

## Other responses

- `400`: The request failed.
- `401`: The request failed.
- `403`: The request failed.
- `404`: The resource does not exist or is not visible to the authenticated principal.
- `409`: The request failed.
- `429`: The request failed.
- `503`: The request failed.

---

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