201) with status: "GENERATING". Poll GET /zap-sites/:id until status flips to DRAFT (copy ready, or FAILED) before previewing or deploying. An undeployed site settles at DRAFT, not LIVE: it only becomes LIVE once it is deployed to a domain.POST /zap-sites/scan gave you back as scan, so the generator has real page context instead of guessing from destination_url alone. audience and cta_label from the scan's suggested_audiences/suggested_cta_label are good defaults too.409), and page generation shares the same hourly cap as POST /:id/regenerate.POST /zap-sites?userId=H8M9JV2S9HMPYFQW393AZHQVD4XM
{"destination_url": "https://www.example.com", "name": "Example Landing Page", "cta_label": "Start free trial"}curl --location 'https://customers.coldmailreseller.com/api/v1/integration/zap-sites?userId=H8M9JV2S9HMPYFQW393AZHQVD4XM' \
--header 'cmr-x-api-key: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"destination_url": "https://www.example.com",
"name": "Example Landing Page",
"cta_label": "Start free trial",
"audience": [
"string"
],
"campaign_context": "string",
"theme": "auto",
"scan": {}
}'{
"status": 201,
"message": "ZapSite created — page generation started",
"data": {
"id": "SITECCHMN86W734P8PMM3E53EW82HCC2",
"name": "Example Landing Page",
"status": "GENERATING",
"destinationUrl": "string",
"campaignContext": "string",
"audience": [
"string"
],
"ctaLabel": "string",
"theme": "auto",
"version": 0,
"copy": {
"headline": "Run outbound at scale and land in the primary inbox",
"subheadline": "string",
"seo_title": "string",
"cta_secondary_label": "string"
},
"formFields": [],
"lastError": null,
"notifyEmail": "string",
"slackWebhook": "string",
"counts": {
"leads": 0,
"visitors": 0,
"ctaClicks": 0
},
"deployments": [
{
"id": "6bbaaa0a-d8a7-4619-b329-9cde8820fd19",
"domain": "example.com",
"status": "QUEUED",
"lastError": null,
"indexing": true,
"tracking": true,
"formEnabled": true,
"createdAt": "string",
"updatedAt": "string"
}
],
"createdAt": "string",
"updatedAt": "string"
}
}