Create domains

Attaches a custom domain to a Cloudflare Pages project.

POST /v1/cloudflare/pages/projects/{project}/domains

Addresshttps://api.hanzo.ai/v1/cloudflare/pages/projects/{project}/domains
MethodPOST
Operationpost_cloudflare_pages_projects_by_project_domains
AuthAuthorization: Bearer $HANZO_API_KEY

Attaches a custom domain to a Cloudflare Pages project. Requires org admin. Cloudflare owns validation and certificate issuance from here on.

Request

3 fields, body application/json (required).

FieldInTypeRequiredDescription
projectpathstringyesProject is the Pages project name, from the path.
namebodystring—Name is the custom domain to attach, e.g. "www.acme.com".
projectbodystring—Project is the Pages project name, from the path.

Response

StatusBodyMeaning
200ok
defaultproblem-detailsrefused

200 body — 1 field.

FieldInTypeAlwaysDescription
(body)bodyanyyes

Failure carries the platform error shape — see Errors.

Examples

hanzo cloudflare pages projects domains create <project>
import { Configuration, CloudflareApi } from 'hanzoai';

const api = new CloudflareApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postCloudflarePagesProjectsByProjectDomains({ project: 'project', name: "<name>", project: "<project>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import CloudflareApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = CloudflareApi(client).post_cloudflare_pages_projects_by_project_domains(project='project', name="<name>", project="<project>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.CloudflareAPI.PostCloudflarePagesProjectsByProjectDomains(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, cloudflare_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = cloudflare_api::post_cloudflare_pages_projects_by_project_domains(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.CloudflareApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new CloudflareApi(client).postCloudflarePagesProjectsByProjectDomains();
curl -X POST https://api.hanzo.ai/v1/cloudflare/pages/projects/<project>/domains \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "name": "<name>",
       "project": "<project>"
     }'

MCP reaches cloudflare through the cloudflare tool, which names its 29 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_cloudflare_d1_databases"
         }
       }
     }'

Cloudflare API · All Hanzo APIs · Interactive reference

Was this page useful?