GENERATING status, before copy/logo are ready.GET /:id with the id from this response until status moves off GENERATING (→ DRAFT once ready, or ERROR with lastError populated if generation failed) and copy/logoUrl are populated.| Field | Type | Required | Notes |
|---|---|---|---|
destination_url | string | Yes | Max 2048 chars. The real destination the page's CTA links to. |
name | string | No | Max 255 chars. Defaults to a name derived from the destination host. |
campaign_context | string | No | Max 4000 chars. Plain-language description of the campaign; primary generation input. |
audience | string[] | No | Target audience labels. |
cta_label | string | No | Max 255 chars. Defaults to "Get in touch". |
theme | string | No | One of auto, slate, mint, carbon. Defaults to auto. |
curl --location --request POST 'https://api.zapmail.ai/api/v2/zap-sites' \
--header 'x-auth-zapmail: YOUR_API_KEY' \
--header 'x-workspace-id: workspace_123' \
--header 'x-service-provider: GOOGLE'{
"status": 201,
"message": "ZapSite created — page generation started",
"data": {
"id": "5b1e0c2a-4f3e-4a9d-9c7c-6a2b6e1a7d10",
"userId": "8a2f9d3e-1b2c-4d5e-8f6a-2c3d4e5f6a7b",
"workspaceId": "8a2f9d3e-1b2c-4d5e-8f6a-2c3d4e5f6a7b",
"name": "Example Q4 Cold Outreach",
"destinationUrl": "https://example.com/pricing",
"campaignContext": "Targeting VP Sales at 50-500 person B2B SaaS companies for our Q4 outbound push.",
"audience": ["VP Sales", "RevOps"],
"ctaLabel": "Book a demo",
"theme": "auto",
"status": "GENERATING",
"version": 0,
"scan": {
"title": "Example — Modern SaaS for Sales Teams",
"primary_color": "#1F6FEB",
"secondary_color": "#0B1220"
},
"copy": null,
"logoUrl": null,
"formFields": null,
"notifyEmail": null,
"slackWebhook": null,
"lastError": null,
"createdAt": "2026-09-04T10:15:32.421Z",
"updatedAt": "2026-09-04T10:15:32.421Z",
"deletedAt": null,
"deployments": [],
"counts": {
"leads": 0,
"visitors": 0
}
}
}