---
title: "Create a website and generate WVC content"
method: POST
path: "/v1/hosting/wvc-website"
tags: ["Vibe Coding"]
---

# Create a website and generate WVC content

`POST /v1/hosting/wvc-website`

## Request

- Base URL: `https://api.10web.io`
- URL: `https://api.10web.io/v1/hosting/wvc-website`
- Auth: none declared. Required headers: `x-api-key`
- TypeScript: <https://skmtc.dev/10web/apis/10web-api-v1/docs/v1/hosting/wvc-website/post.ts> (a function with typed inputs; its response is checked against the schema)

Combined endpoint that creates a new website and immediately triggers WordPress Vibe Coding
(WVC) content generation on it. Two mutually exclusive website creation modes:

**Claim mode (ghost pool)** — omit `subdomain` and omit all hosting fields
(`region`, `site_title`, `admin_username`, `admin_password`, `is_trial`,
`trial_website_delete_after_days`; legacy aliases `is_demo` /
`demo_domain_delete_after_days` also count as hosting fields). Uses a warm-pool ghost on the reseller workspace when
available; otherwise cold-creates with a generated subdomain. Requires an eligible reseller
workspace (active reseller agreement and active client main domain). A successful claim
emits webhook `website_generation_completed` with `generation_flow: reseller_ghost_claim`.
The returned URL is the pool site URL (you do not choose the subdomain). WVC fields
(`email`, `user_prompt`, etc.) remain allowed in claim mode; hosting fields remain
forbidden without `subdomain`.

**Cold-create mode** — pass `subdomain` plus `region`, `site_title`, `admin_username`,
and `admin_password`. Honors the requested subdomain. On completion, emits
`website_generation_completed` with `generation_flow: create_website` (or
`create_website_dedicated_vm` for dedicated-VM accounts). Passing any hosting field without
`subdomain` returns HTTP 400.

Performs the following steps in sequence:

1. **Create website** — provisions a new WordPress website (claim or cold-create).
2. **Configure WVC** — installs the WVC theme and removes incompatible plugins.
3. **Generate WVC content** — submits the WVC generation request. The gateway waits up to
   10 seconds for the WVC service to respond; if it times out the generation continues in
   the background.
4. **Autologin URL** — generates a single-use URL that opens the WVC editor in the
   WordPress admin panel.

Use this endpoint to create and launch a WVC-powered website in a single call.
If you already have an existing website and only need to trigger WVC generation,
use `POST /v1/wvc/{website_id}/create` instead.

**⚠️ Service Requirement:**
This feature requires the WordPress Vibe Coding (WVC) service to be enabled for your account.
If the WVC service is not enabled, this feature will be unavailable and API requests may return
an error response. Please contact support to enable this service.

## Headers

- `x-api-key` string, required

## Request body

- WVCCombinedCreateRequest
  - `email` string, email, required: Email of the WordPress admin user. Used to generate the autologin URL. If no WordPress user with this email exists, a new administrator account will be created.
  - `subdomain` string: Subdomain for the new website (e.g. `my-site` → `my-site.10web.club`). If omitted, a random subdomain is assigned.
  - `region` string: Hosting region for the website.
  - `site_title` string: WordPress site title.
  - `admin_username` string: WordPress administrator username.
  - `admin_password` string: WordPress administrator password.
  - `is_trial` 0 | 1: When `1`, creates a trial website that is automatically deleted after `trial_website_delete_after_days` days. (0 = regular website, 1 = trial website). Cold-create only; forbidden in claim mode. Legacy alias `is_demo` is still accepted temporarily and mapped to `is_trial`. Trial sites do not consume paid website slots. The maximum number of trial websites is limited by plan parameter `b2b_trial_website_create_limit_hard` when the plan has `b2b_trial_limitations` (otherwise legacy `demo_website_count`).
  - `trial_website_delete_after_days` integer: Optional. Number of days after which a trial website is automatically deleted. Only relevant when `is_trial` is `1`. Cold-create only; forbidden in claim mode. Default is 3. Maximum is enforced by Core using the plan `b2b_trial_period_days` parameter (values above the plan max are clamped). Legacy alias `demo_domain_delete_after_days` is still accepted temporarily.
  - `user_prompt` string: Description of what the website should include, used by the WVC service to generate content.

## Response `200`

Website created and WVC content generated successfully

- WVCCombinedCreateResponse
  - `website_id` integer: ID of the newly created website.
  - `autologin_url` string: Single-use URL that logs the user into WordPress and opens the WVC editor. Valid for a limited time.
  - `data` object: Raw response from the WVC service, present when the WVC service responded within the 10-second timeout window.

## Other responses

- `202`: Website created but WVC generation is still in progress. Returned when the autologin URL could not be generated yet (e.g. the site is still provisioning). Use the returned `website_id` with `POST /v1/wvc/websites/{website_id}/autologin` to obtain the autologin URL once the site is ready.
- `400`: Bad request
- `403`: Unauthorized access
- `429`: Too many requests
- `500`: Something went wrong

---

[API](https://skmtc.dev/10web/apis/10web-api-v1.md) - [All operations](https://skmtc.dev/10web/apis/10web-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/10web/apis/10web-api-v1/revisions/01afc9651dfc?raw)
